新手求指教 关于指针问题
char *P ="abg" ;
char *q ="ab" ;
p和q都是指向常量区的,abg包括ab,那么在常量区不是应该分配同一块存储区域吗,为什么p != q呢,求真相?
[解决办法]
现代编译器一般会把相同字符串常量只存储一份,所以
const char* p = "ab";
const char* q = "ab";
这样的话,p和q会指向同一个地址。
但是如果p是"abg"的话,那么"abg"和"ab"需要存储两份,所以p和q所指向的地址是不同的。原因很简单,因为"ab"相当于|a|b|0|,而"abg"相当于|a|b|g|0|,由于结束符0的存在,它们无法共享前面的字符。