const test

xiaoxiao2021-02-28  83

/* 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; } */
转载请注明原文地址: https://www.6miu.com/read-67989.html

最新回复(0)