Code Bye

可以直接给字符指针赋值一个字符串吗

#define M “hello world”
char * str = M;
这样写会存在问题吗?本人个人觉得会有问题。
本人的理解是:原因是str是一个随机值,直接指向了内存中的某一个位置,那么对它赋值后相当于直接修改了该地址后的内容,在某些时候(这个概率应该很低)应该会引起系统异常。
解决方案

5

理解讨论之前请先学会怎么样观察
VC编译选项加/EP /P(项目、属性、配置属性、C/C++、预处理器、预处理到文件:是,预处理取消显示行号:是),重新编译,查看宏展开后对应的.i文件。gcc加-E http://bbs.csdn.net/topics/391003898

20

没问题,这里只是指针赋值,而不是修改指针指向的内容
本应该用const char* =  xxx
可以用char*是由于历史原因

5

字符串常量是一个不可更改的值,所以应该赋给const char * 才对,不过赋给char*也可以,只要你不通过这个指针来试图修改指向的字符串就行

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