我已经写了这段代码。
如果
#include <stdio.h>
int main() {
int b = 15;
const int *foo = &b;
//b = 20;
*foo = 20;
printf("%d", *foo);
return 0;
}
这意味着foo
指向的位置不能改变。这意味着b
不能改变。但是当我取消注释b = 20
这一行时,它不会显示任何错误,并且我得到输出20
。而在这段代码中,我会得到这个错误。
main.c: In function 'main':
main.c:15:10: error: assignment of read-only location '*foo'
*foo = 20;
如果
*foo
是只读位置,为什么可以更改其值b = 20
?