从今日开始学习c++的基础知识,开贴做记录。
C语言和C++并不是对立的竞争关系;
C++是C语言的加强,是一种更好的C语言;
C++是以C语言为基础的,并且完全兼容C语言的特性;
C++继承了所有的C特性;
C++在C的基础上提供了更多的语法和特性;
C++的设计目标是运行效率与开发效率的统一;
1. 在c++中所有变量都可以在使用时进行定义,更强调了实用性。
for(int i=0;i<10;i++)
2.在C语言中无法取得register变量地址,register关键字请求“编译器”将局部变量存储于寄存器中,不可以对其取地址。
在C++中依然支持register关键字;
C++编译器有自己的优化方式,不使用register也可能做优化,C++中可以取得register变量的地址。
早期C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。C++编译器发现程序中需要取register变量的地
址时,register对变量的声明变得无效。
3.在C语言中,重复定义多个同名的全局变量是合法的,而在在C++中,不允许定义多个同名的全局变量。C语言中多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上。
4. C++编译器对const常量的处理
当碰见常量声明时在符号表中放入常量,编译过程中若发现使用常量则直接以符号表中的值替换,编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存储空间。
c中:const int a=10;
int *p=(int*)&a;
*p=5;可以改变a的值,但是在c++中a中依然是10,真正意义上的常量,而不是只读变量。
5. C++中所有的变量和函数都必须有类型,C语言中的默认类型在C++中是不合法的。
f1(i)
{
printf("%d\n",i);
}
f2()
{
return 1;
}
C中 int f1();表示返回值为int,接受任意参数的函数,int f1(void);表示返回值为int的无参函数。
在C++中 int f1();和int f(void)具有相同的意义,都表示返回值为int的无参函数。
6.C++中加入了Bool类型,C++中的bool可取的值只有true和false,即,1和0,理论上bool只占用一个字节,如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现。
bool类型只有true(非0)和false(0)两个值C++编译器会在赋值时将非0值转换为true,0值转换为false。
7.三目运算符的升级:
C语言中的三目运算符返回的是变量值,不能作为左值使用;
C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方,但是三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用。
阅读(1397) | 评论(0) | 转发(0) |