【发布时间】:2021-07-02 18:09:53
【问题描述】:
在 C++11 中,char 指针不能直接初始化为字符串字面量。
在早期版本的 C++ 中,我可以毫无问题地做到这一点。
如果允许以下代码:
char arr[] = "Hello";
char *p_str1 = arr; //allowed
那为什么下面的代码不允许呢?
char *p_str3 = "Hello"; //Not allowed
注意:我知道添加 const 会解决问题。但我需要知道原因。
【问题讨论】:
-
恕我直言,错误消息中的原因很清楚。第二个和第一个类似,但
const char arr[] = "Hello";. -
@S.M.需要知道第一个与第二个有何不同
-
@CEPB 我不知道有任何 C++ 实现会为这两种情况执行堆分配。
-
@CEPB 对您的评论的编辑使它变得更加错误,而不是更少。这与跟踪动态内存分配的能力无关。
标签: c++ arrays c++11 pointers string-literals