Code Bye

为什么字符串常量能直接给一个字符指针变量赋值呢

#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++标准只好在这个地方绕了一个小弯。
知道就行了,别深究了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么字符串常量能直接给一个字符指针变量赋值呢