【发布时间】:2024-01-11 14:07:01
【问题描述】:
当我遇到一些对我来说不太清楚的事情时,我正在用 C++ 做一些练习:
cout << "String" + 1 << endl;
输出:字符串
我建议它是指针算术,但这是否意味着每次我在引号中打印不属于先前定义的数组的内容时,我实际上创建了一个 char 数组?
【问题讨论】:
-
"String"的类型是const char*,所以是的,它是指针算法,但你没有创建一个数组,它被烘焙到可执行文件的数据部分(AFAIK)。跨度> -
@Borgleader --
"String"的类型是const char[7]。 -
@PeteBecker 是的,但实际上它“总是”衰减。不过,您绝对是正确的。所以让我像往常一样保持警惕。
-
@Borgleader -- 不,它不会“总是”衰减。正是这种草率让初学者(有时是更高级的程序员)陷入困境。
-
你也可以写
&"String"[1],因为加法是可交换的,&1["String"]。