#define M "hello! char * m; m=M; puts(m);"
简略了代码,不要注重细节。
m不是存储的是指针吗,M不是字符串常量吗,但为什么M给m赋值,最后执行结果还是现实的是正确的“hello!”呢?
解决方案
10
是存这个字符串的首地址及h的地址;
10
C语言没有定义专门的字符串数据类型,实际通过字符数组实现
10
m存的是M的首地址,哪有问题了?
10
原因是在C89标准出来的时候,已经有海量的这样的不顾const特性的代码存在了。
所以,C、C++标准只好在这个地方绕了一个小弯。
知道就行了,别深究了。
所以,C、C++标准只好在这个地方绕了一个小弯。
知道就行了,别深究了。