当存在宏(_cplusplus)则以C++的方式编译,否则以C语言的方式进行编译
const :在C和C++中的区别
- C语言中变量为主,C++中常性为主
C:const int n = 5;
int arr[n] = { 1, 2, 3, 4};//error
C++:const int n = 5;
int arr[n] = { 1, 2, 3, 4};//ok
//在C++中直接把值替换成对应的值
常性针对变量:不可以改值,可以改变指针指向
p2封锁了指向(封锁:只可读不可写)
const int *p2 = &a;//*p2 = 1000//error p2 = &b//ok
int const *p3 = &a;//*p2 = 1000//error p2 = &b//ok
常性针对地址:不可以改指针指向,可以改指针指向的地址所存储的值
p3封锁了自身
int* const p3 = &a;//*p3 = 1000//ok p3 = &a;//error
常性即针对变量又针对地址:都不能改
p4封锁自身和指向
const int* const p4 = &a;//*p3 = 1000//ok p3 = &a;//error
两个解释:
①常性不许改变,害怕通过地址对a进行改变;
②权限放大和缩小的原因:可以缩小不可以扩大//安全性
const int a = 10;
int *ip = &a//error int *ip = (int*)&a//ok const int* ip = &a//ok
int a = 10;
int *const p = &a;
int *s1 = p;//ok
const int *s2 = p;//ok
int * const s3 = p;//ok
const int *const s4; //ok
const int a = 10;
int *const p = &a;
int *s1 = p;//error
const int *s2 = p;//ok
int * const s3 = p;//error
const int *const s4; //ok
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)