const test

来源:互联网 发布:王国插画 知乎 编辑:程序博客网 时间:2024/05/16 09:08
/*int main(){//const int pp; //常量,必须进行初始化int a = 10;int *p=&a;//int *const m;//必须进行初始化const int *q;//可以不进行初始化q = &a;//q 可以进行赋值 *q不能进行修改//去掉离其最近的类型,const修饰的就是它const int *const *u ;//u可以做修改 *u不能做修改u = &q;//printf("%d", *q);return 0;}*//*printf("%d\n", x);00E62A0E  mov         eax,dword ptr [x]  00E62A11  push        eax  printf("%d", q);00E62A29  push        0Ah   //常量的输出和变量的输出的区别,常量是直接输出的0A值,而变量是通过从内存中取出 //值到寄存器中再将该值输出*//*extern int x;int main(){x = 20;const int d = x;const int*x = &d;printf("\n%d",x);printf("%d", d);return 0;}通过在两处加上extern来引用外部常量,其中const编译时候产生了符号,链接过程中对该符号进行解析。如何进行修改这个变量中的值,这种情况下进行修改,用到此值时,会到存此常量的地址去找该值,而不是平常情况下的替换此值,打印出来的值是当前内存中所存的值。在本文件内使用自己的常量,在编译时候用值代替在引用处,所以即使修改了,打印出来的还是编译时候所替换的值*//*int main(){const int *p;//两条意思一样int const *q;//可以不进行初始化//const右边没有修饰指针或引用就不参与类型int *const p;//必须进行初始化return 0;}*//*内联函数 没有函数栈的开辟,编译时候将函数体的部分在引用处展开*//*  char *const m  //m所指向内存不能变,但是m所指向的内存中的内容可以发生改变int main(){char *p =new char[20];p = "zhongguo";char *k = new char[20];k = "renminwansui";char *const m = p; //m所指向内存不能变,但是m所指向的内存中的内容可以发生改变printf("%s\n", p);printf("%s", m);//m = k;        错return 0;}*//* //char const *m int main(){char *p = new char[20];p = "huanying";             //cout<<&p<<endl;char const *m = p;//不能通过*m来改变p中的值,但是可以通过对p进行操作来改变其中的值p = "zhongguo";             //cout<<&p<<endl;cout<<m<<endl;//已经修改了其中的值,打印出来的是未修改之前的值return 0;}*///此处的*p是常量,所以在编译过程中对其进行了修改/*p = "huanying";00ED3A67  mov         dword ptr [p],0ED58B0h  char const *m = p;//不能通过*m来改变p中的值,但是可以通过对p进行操作来改变其中的值00ED3A6E  mov         eax,dword ptr [p]  00ED3A71  mov         dword ptr [m],eax  p = "zhongguo";00ED3A74  mov         dword ptr [p],0ED5928h  *//*int main(){char x = 'e';char const*p = &x;x = 'y';printf("%c",*p);return 0;}*//*int main(){int a = 10;int *p = &a;int *const *q = &p;int *m = &a;int **const k = &m;int *const u = &a;int *const*y = &u;const int *w = &a;const int **v = &w;return 0;}*///引用必须是对有地址的数据进行引用,对于一些数据会做到创建的临时变量来辅助引用/*int main(){int **p = NULL;const int***q = &p;//“初始化”: 无法从“int ***”转换为“const int ***”return 0;//多级指针中const不能多也不能少}*//*int main(){int a = 10;const int *p = &a;const int **q = &p;    *q = NULL;q = NULL;//**q = 10;其不是可修改的左值return 0;}*//*int main(){int a = 1;int *const p = &a;*p = 20;}*//*int main(){int a =10;const int *p = &a;return 0;}*/

0 0
原创粉丝点击