char *str="abcdefg"; 这条 语句这样写合法吗?
文章正文
发布时间:2025-10-17 15:45
引用 12 楼 u014444402 的回复:[quote=引用 11 楼 ryxcaixia 的回复:]
[quote=引用 10 楼 wen_eric 的回复:]
[quote=引用 6 楼 ryxcaixia 的回复:]
只在第一次合法
如char* p = NULL;
p = "abcde" 这种自然报错
char* p = "abcde"
这种可以让一个非常量指针直接指向常量, 是因为字符串常量的地址是在编译期就确定的
存在于程序的静态常量区 符号表中
一个编译期间确定好的地址 自然可以在初始化的时候赋值给一个非常量指针

如char* p = NULL;
p = "abcde";
这样不会报错。[/quote]
XB[/quote]
讨论就讨论,骂人就不对了.
首先,在PC平台,常量指针与内存指针位数是一样的,不会有错,可能一些嵌入平台会有错,例如
picc编译器 "ddddd"这个指针是24位的,普通的指针才是16位的,所以会有错.[/quote]
为啥要生气呢 亲?
上述所有说的指针无非都是基于vs 编译器和gcc/g++编译器
例如masm5.0 16位汇编 那他的指针又是多少位? 估计他还没指针的概念
有问题大家拿出来讨论下 对就是对 错就是错
我把代码拿到编译器去试了下 得出之前我的结论是错的 提高不就是在互相交流(更多时候是喷)中产生的么
你说我说的对吧亲