c与c++的区别(一)
来源:互联网 发布:知乎扫地机器人 编辑:程序博客网 时间:2024/05/18 10:35
最近在学习c++,很多人都说C++是c的扩充,但是我认为这两种语言虽说前面的语法是差不多的,但是后期的编程包括思想都是不同的。我觉得以<c++ prime>这本书为我的学习书目,总结一些c和c++不同的地方,当然也有一些是以前我没有注意到的地方,不代表c中没有这种特性。
1.main()函数的返回类型必须为int,即整数类型。int类型是一种内置类型,即语言自身定义的类型。
2.在大多数系统中,main的返回值被用来指示状态。返回值0表示成功,非0的返回值含义由系统定义,通常指出错误类型。3.c++中使用iostream库,包含istream和ostream两个基础库,分别表示输入流和输出流。
4.定义了4个IO对象,cin和cout称为标准输入输出。用cerr来输出警告和错误消息,也称为标准错误。clog用来输出程序运行时的一般性信息。
5.endl是一个被称为操纵符的特殊值,目的是结束当前行,并将与设备关联的缓冲区的内容刷到设备中。
6.命名空间可以帮助我们避免名字定义冲突,以及使用库中相同名字导致的冲突。标准库定义的所有名字都在命名空间std中。我们可以通过作用域运算符::来使用名字,例如:std::cout,或者我们也可以using声明来声明命名的空间。形式如下:
using namespace::name;
一旦有了这种声明我们就可以直接访问名字了。
#include <iostream>using std::cin;int main(){ int i; cin >> i; //使用using声明后 std::cin >> i; //未使用using声明前 return 0;}
而且头文件中不应该包含using声明,因为头文件的内容会拷贝到引用它的文件中,会导致名字冲突。
但是,这样还是有些麻烦,我们还可以使用using namespace std;这种方式,可以避免我们一个一个区声明命名空间的名字。同样对于一些比较长的命名空间我们也可以使用别名简化它。比如:namespace prime = cplusplus_prime,这样就可以用prime代替cplusplus_prime。
7.读取数量不定的输入数据
#include <iostream>using namespace std;int main(){int sum = 0, value = 0;while (cin>>value){sum += value;}cout << "sum is:" << sum << endl;return 0;}8.文件结束标志,在windows中,输入文件结束符的方法是敲ctrl+z,然后按Enter键或Return键。在UNIX中,文件结束符输入用ctrl+d。
9.定义了新的类型long long 是长整形,最小为64位.
10.把一个非布尔类型的值赋给布尔类型时,初始值为0则结果为false,否则结构为true。
把一个布尔类型的值赋给非布尔类型时,初始值为false则结果为0,初始值为true则结果为1.
11.初始化不是赋值,初始化的含义是创建变量时赋予其一个初始化,而赋值的含义是把对象的当前值擦除,而以一个新值来代替。
12,.在c++中一个变量的初始化有以下几种方法
int n = 0;int n = { 0 };int n(0);int n{ 0 };其中在c++11标准中,用花括号的初始化得到的全面的应用。
如果没有进行初始化,那么变量会被默认初始化,默认初始化的值会根据变量的位置而决定,定义于任何函数体之外的变量被初始化为0。
注意:为了防止无法预料到的错误,建议初始化每一个内置类型的变量。
13.c++是一种静态类型语言,其含义是在编译阶段检测类型。
14.定义引用时,程序把引用和它的初始化值绑定在一起,而不是将初始值拷贝给引用。因为无法重新绑定另外一个对象,因此引用必须被初始。引用只能绑定在对象上,而不能绑定某个具体的值。所有引用的类型都要和绑定的类型相匹配,但是有两个例外:
1.在初始化常量引用时,允许用任意表达式作为初始值,只要改表达式的结果能转换成引用类型即可。
int i = 42;const int &r1 = i; //正确const int &r2 = 42; //正确const int &r3 = r1 * 2; //正确int &r4 = r1 * 2; //错误:r4是一个普通的非常量引用2.在类的继承中,我们可以将基类的引用绑定到派生类对象上。
15.面对一条比较复杂的指针或引用的声明语句时,从右向左阅读有助于弄清楚它的真实含义。
16.c++11标准规定,允许将变量声明为constexpr类型以便让编译器来验证变量的值是否是一个常量表达式。声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化。
17.在c语言中常用关键字typedef表示类型同名。在c++11标准中,规定了一种新的方法,使用别名声明来定义类型的别名:
using SI = int ; //SI是int的同义词
18.c++11新标准引入了auto类型说明符,用它能让编译器去替我们分析表达式所属的类型。
auto item = val1 + val2; //item初始化为val1和val2相加的结果,从val1和val2的类型推断出item的类型。
19.c++11新标准规定,可以为数据成员提供一个类内初始值。创建对象时,类内初始值将用于初始化数据成员。没有初始值得成员将被默认初始化。(默认初始化:函数内变量的值跟变量的位置有关,函数外变量的值为0)
- c与c++的区别(一)
- C与C++的区别(一)
- C++ Q&A(一)C++与C的区别
- C语言左值与右值的区别(C语言深度剖析读书笔记一)
- C和C++的区别(一)
- [More Effective C++]条款一:指针与引用的区别
- (一) C++与C语言的区别 下
- 【每日一C之十二】指针与引用的区别
- 【Java语法与C语言的区别】一
- C++与C语言的区别——C++是对C语言的扩展(一)
- C与C++的区别(上)
- c# 与c/c++/java的区别(待续)
- C/C++与Objective-C的区别(转载)
- C++(C)中Sizeof与Strlen的区别
- 后缀名C与c的区别
- GNU C 与 ANSI C的区别
- C与C++的区别
- 标准C 与Keil C的区别
- WordPress 密码重置提示 您的密码重设链接无效,请在下方请求新链接 解决方案
- bzoj2599: [IOI2011]Race 点分治
- 统计学习精要 (Elements of Statistical Learning ) 习题 3.21
- Maven中使用本地JAR包
- 中缀式变后缀式
- c与c++的区别(一)
- 1.3.2微信小程序 WXSS
- RESTful API 设计最佳实践
- LeetCode34. Search for a Range
- Network in Network 笔记
- React-Native iOS启动闪白屏问题完美解决方案:react-native-launch-image
- 前台Url重定向与具体应用
- unsigned 和signed
- 解决centos6上python升级混乱导致yum报错