通常,当您声明指针(例如int)时,您必须为其分配一个内存地址:
int value = 123; int* p = &value;
创建char指针时,可以为其指定char数组,而无需包含地址:
char* c = "Char Array";
这是如何运作的?它是否分配内存并指向它?为什么其他类型的指针不能做同样的事情?
这是如何运作的?
字符串文字存储在可执行文件的只读数据部分中(意味着它在编译期间初始化),c
并初始化为指向该内存位置.隐式数组到指针转换处理其余部分.
请注意,char*
不推荐使用字符串文字的转换,因为无论如何内容都是只读的; const char*
在指向字符串文字时更喜欢.
相关构造char c[] = "Char Array";
将char
在运行时将字符串文字的内容复制到数组中.
为什么其他类型的指针不能做同样的事情?
这是字符串文字的一种特殊情况,为方便起见,继承自C语言.