C到C++的升级
发布时间:2020-12-16 09:15:55 所属栏目:百科 来源:网络整理
导读:1. C与C++的关系 C++继承了所有的C特性 C++在C的基础上提供了更多的新的语法和特性 C++的设计目标是 运行效率与开发效率的统一,其开发效率高于C语言 2. 变量声明与定义 变量可以在使用时定义 C++更强调语言的实用性, 所有的变量都可以在需要使用时再定义 C
1. C与C++的关系
2. 变量声明与定义变量可以在使用时定义
不允许定义同名全局变量
标识符必须显示声明类型
面试题:int f()和int f(void)有区别吗?如果有,区别是什么?
3. struct加强为类型
4. 三目运算符功能升级C++对三目运算符进行了升级:
#include <stdio.h> int main() { int a = 1; int b = 2; ((a < b) ? a : b) = 3; //正确,返回a或b的引用,可以作为左值 ((a < b) ? 1 : b) = 4; //错误,返回1或b的值,不能作为左值 printf("a = %d,b = %dn",a,b); return 0; } 5. const功能升级C语言中的const
C++中的const
#include <stdio.h> int main() { /* 用字面值常量或其他const常量初始化的为const常量 */ const int A = 1; const int B = 2; const int C = B; int array[A + B + C] = {0}; for (int i = 0; i < (A + B + C); i++) { printf("array[%d] = %dn",i,array[i]); } /* 用其他变量初始化的为const只读变量 */ int x = 1; const int rx = x; int *prx = (int *)℞ *prx = 5; printf("rx = %dn",rx); /* 被volatile修饰的为const只读变量 */ volatile const int y = 2; int *p = (int *)&y; *p = 6; printf("y = %dn",y); return 0; } const常量进入符号表
一般情况下,C++编译器不会为const常量分配内存空间,除非遇到以下两种情况:
C++编译器虽然可能会给const常量分配内存,但这仅仅是为了兼容C语言的特性,并不会使用该存储空间中的值,使用的仍然是符号表中的值。 #include <stdio.h> int main() { const int c = 0; int *p = (int *)&c; //对const常量取地址,为const常量分配内存空间 *p = 5; //改变的是为const常量分配的内存空间 printf("c = %dn",c); //const常量仍然使用符号表中的值 printf("*p = %dn",*p); //这里才使用为const常量分配的内存空间中的值 return 0; } 6. bool类型引入
#include <stdio.h> int main() { bool b = false; printf("sizeof(b) = %dn",sizeof(b)); printf("b = %dn",b); b = 3; printf("b = %dn",b); b = -5; printf("b = %dn",b); b = 0; printf("b = %dn",b); return 0; } 7. register成为废设,只为兼容C
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |