为什么char* c = "a";是合法的?

来源:6-7 指针的基本操作一

慕仔7532636

2023-05-17

定义了一个字符类型的指针,为什么可以把一个字符串赋给它?如果是单引号的字符’a’会正常的报错。但是字符串却可以正常的编译通过运行。

写回答

1回答

quickzhao

2023-05-19

在C++中,字符串常量是以字符数组的形式存在的,以空字符 '\0' 结尾。当你使用"a"这样的字符串常量时,编译器会为该字符串分配一块内存,并在末尾添加一个空字符。在char* c = "a"; 这个语句中,char* c 声明了一个字符指针 c。然后,将字符串常量 "a" 的首地址赋给了这个指针变量 c。实际上,c 指向了字符串常量的首字符 'a'。其实更好的写法是:const char* c = "a";  'a'是单个字符,当然不能赋给指针,char c = 'a';是可以的。



0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程