gpt4 book ai didi

c++ - 为什么可以将一个数组赋值给一个char指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:14 26 4
gpt4 key购买 nike

通常当您声明一个指针(例如 int)时,您必须为其分配一个内存地址:

int value = 123;
int* p = &value;

当您创建一个字符指针时,您可以为其分配一个字符数组而不需要包含地址:

char* c = "Char Array";

这是如何运作的?它是否分配内存并指向它?为什么其他类型的指针不能做同样的事情?

最佳答案

How does this work?

字符串文字存储在可执行文件的只读数据部分(意味着它在编译期间初始化)并且 c 被初始化为指向该内存位置。隐式 array-to-pointer conversion处理其余部分。

请注意,将字符串文字转换为 char* 已被弃用,因为内容无论如何都是只读的;指向字符串文字时更喜欢 const char*

相关构造 char c[] = "Char Array"; 会在运行时将字符串文字的内容复制到 char 数组。

Why can't other type pointers do the same thing?

为了方便起见,这是从 C 继承的字符串文字的特例。

关于c++ - 为什么可以将一个数组赋值给一个char指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34107996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com