gpt4 book ai didi

C++,为什么array=ptr合法?

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:36 25 4
gpt4 key购买 nike

最近看到这段代码。这行不应该是编译错误吗?char arr[4]="Abc";

这里发生了什么? arr是指针吗? char* 是否复制到堆栈上的数组中?这在所有版本的 C++ 中都是合法的吗(C 又如何呢?)。我测试并看到这在 VS 和我相信使用 gcc 的代码板中有效

-edit- 只是为了好玩,我尝试用静态 const char * 替换“Abc”。它给了我一个无效的初始化程序错误。

int main()
{
int j=97;
char arr[4]="Abc";
printf(arr,j);
getch();
return 0;
}

最佳答案

array = ptr 不是合法的赋值(如果 array 具有数组类型并且 ptr 具有相应的指针类型)。但是,在您显示的代码中, = 引入了一个初始化程序,因为它是声明的一部分。这不是作业。

用字符串常量初始化char数组是合法的。

关于C++,为什么array=ptr合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3847061/

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