gpt4 book ai didi

c++ - 猜猜输出。 (字符数组的声明/初始化)

转载 作者:行者123 更新时间:2023-11-28 03:16:44 25 4
gpt4 key购买 nike

这是一段代码。我正在使用 g++

void initialize(int p, char a[], char b[])
{
for(int i=0;i<6*p;i++)
{
a[i]='-';
b[i]='-';
}
}

int main()
{
int p=9;
char a[2*p],b[4*p];
initialize(p,a,b);
cout<<a<<endl<<b<<endl;
}

在这里,a 和 b 的声明方式……它们的大小应该分别为 18 和 36。但它们并不像输出中看到的那样。发生了什么事?

Output:
------------------------------------------------------
------------------------------------------------------------------------------------------------------

最佳答案

您正在初始化远远超出了为 ab

分配的内存范围

你需要做的

for(int i = 0; i < 2*p; ++i) {
a[i]='-';
}

for(int i = 0; i < 4*p; ++i) {
b[i]='-';
}

分配给您拥有的内存之外的内存实际上可以做任何事情。就像给你的狗发传真一样。

关于c++ - 猜猜输出。 (字符数组的声明/初始化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16667081/

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