为什么char* c = "a";是合法的?
来源:6-7 指针的基本操作一
慕仔7532636
2023-05-17
定义了一个字符类型的指针,为什么可以把一个字符串赋给它?如果是单引号的字符’a’会正常的报错。但是字符串却可以正常的编译通过运行。
写回答
1回答
-
在C++中,字符串常量是以字符数组的形式存在的,以空字符 '\0' 结尾。当你使用
"a"
这样的字符串常量时,编译器会为该字符串分配一块内存,并在末尾添加一个空字符。在char* c = "a"; 这个语句中,char* c
声明了一个字符指针c
。然后,将字符串常量"a"
的首地址赋给了这个指针变量c
。实际上,c
指向了字符串常量的首字符'a'
。其实更好的写法是:const char* c = "a"; 'a'是单个字符,当然不能赋给指针,char c = 'a';是可以的。00
相似问题