gpt4 book ai didi

c++ - 为什么代码不能打印这个二维数组的元素?

转载 作者:行者123 更新时间:2023-11-30 01:38:07 24 4
gpt4 key购买 nike

好的,所以我已经编写了这段代码来打印二维数组的所有元素。但是,令人惊讶的是,屏幕上没有打印任何内容。这是代码:

#include <bits/stdc++.h>
using namespace std;

char ans[1001][1001];



void display_ans(int row,int col)
{
for (int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
cout<<ans[i][j];
}
cout<<endl;
}
}

int main()
{
memset(ans,'$',sizeof(ans[0][0])*2*2);
display_ans(2,2);
return 0;
}

屏幕上没有打印任何东西。这真的很尴尬。我不明白代码有什么问题。

最佳答案

让我们看一下在内存中看起来更小的数组数组:

char a[3][3];

这会是这样的

+---------+---------+---------+---------+---------+---------+---------+---------+---------+| a[0][0] | a[0][1] | a[0][2] | a[1][0] | a[1][1] | a[1][2] | a[2][0] | a[2][1] | a[2][2] |+---------+---------+---------+---------+---------+---------+---------+---------+---------+

memset(ans,'$',sizeof(ans[0][0])*2*2); 之类的调用将为前四个内存位置设置内存。对于我们上面的示例,它将是 a[0][0]a[0][1]a[0][2]a[1][0]。例如 a[2][1] 的内存将不会被触及。

对于您的数组,ans[0][0] 是第一个元素,然后是 ans[0][1],以及所有剩余的 999 个元素a[0]a[1][0] 之前。

这导致将由您的 memset 调用设置的元素将是 ans[0][0]ans[0][1] ans[0][2]ans[0][3]ans 的剩余内存将全部为零。

And 由于您使用基于 one 的索引进行打印,因此您打印 ans[1][1]ans[1 ][2]ans[2][1]ans[2][2]。都是零。


哦,我看到你更新了你的问题,这意味着你将打印 ans[0][0], ans[0][1], ans[1][0]ans[1][1]。前两个字符应为 '$',而后两个字符仍为零。

关于c++ - 为什么代码不能打印这个二维数组的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48644633/

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