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

C语言 码拜 5年前 (2016-09-20) 1280次浏览
#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协议进行授权 , 转载请注明可以直接给字符指针赋值一个字符串吗
喜欢 (0)
[1034331897@qq.com]
分享 (0)