关于 常量和指针的有关问题? 各种大神请进
关于 常量和指针的问题? 各种大神请进
const int a = 1;
int *p = &a;
*p = 10000;
printf("%d\n",a);
resualt : a =10000
a 的值为什么可以改变了?
a在常量区的啊。
C语言里面的const 难道只有一半的作用?难道只是一种提示?
求详细解答,越详细越好。
1、另外再求一些关于 字符串 数组 指针 这3个东西相比较的一些资料,越详细越好,
2、还有malloc 内存分配 更加深入的更加详细的一些资料。
《C和指针》这本书上1、这方面的内容我看的不是特别清楚。
先谢谢了。
------解决方案--------------------
首先你说的const修该的变量a是常量就错误。这就直接导致你认为后面全是错的。Const并不会修改变量的存储位置,a定义的空间仍然是可读写,因为它的存储空间不在常量区。const它的功能仅仅是告诉编译器变量a不能当左值,如果在后面碰到a为左值的话,报错。但是并不妨碍我们用变量p指向a的空间修改a的值。Const仅仅是在C语言层面模拟的假常量,只要用指针变量就能突破这种假象。
------解决方案--------------------
const int a = 1;
int *p = &a;
*p = 10000;
printf("%d\n",a);
resualt : a =10000
a 的值为什么可以改变了?
a在常量区的啊。
C语言里面的const 难道只有一半的作用?难道只是一种提示?
求详细解答,越详细越好。
1、另外再求一些关于 字符串 数组 指针 这3个东西相比较的一些资料,越详细越好,
2、还有malloc 内存分配 更加深入的更加详细的一些资料。
《C和指针》这本书上1、这方面的内容我看的不是特别清楚。
先谢谢了。
指针
C
内存分配
malloc
------解决方案--------------------
首先你说的const修该的变量a是常量就错误。这就直接导致你认为后面全是错的。Const并不会修改变量的存储位置,a定义的空间仍然是可读写,因为它的存储空间不在常量区。const它的功能仅仅是告诉编译器变量a不能当左值,如果在后面碰到a为左值的话,报错。但是并不妨碍我们用变量p指向a的空间修改a的值。Const仅仅是在C语言层面模拟的假常量,只要用指针变量就能突破这种假象。
------解决方案--------------------