gpt4 book ai didi

c++ - 每次我将第一个整数放入数组时,方法都会崩溃。操作不好?

转载 作者:行者123 更新时间:2023-11-30 01:53:48 33 4
gpt4 key购买 nike

我有一个用整数填充数组的方法:

void  fill(int* a[], int dim1, int dim2)
{
int intinArray = 0;
for(int i=0;i<dim1;i++)
{
for(int j=0;j<dim2;j++)
{
cin >> intinArray;
a[i][j] = intinArray;
}
}
}

如果我在 main() 方法中这样声明数组:

int** tab;
fill(tab,3,3);

当我将第一个整数放入 cin 时它崩溃了。为什么?如果此行有问题:

a[i][j] = intinArray;

我应该怎么改?

最佳答案

您的代码的根本问题在于您声明了指针,但没有在任何地方初始化指针以指向某处。您将指针视为一个常规的旧二维整数数组。那么,既然这么简单,为什么还要使用指针呢?

鉴于这是指针使用的基础,而您显然没有这样做,解决方案是检查使用指针的工作代码。

int main()
{
int *p; // uninitialized -- points to who-knows-where
*p = 10; // this is undefined behavior and may crash
}

获取该代码并理解为什么它也可能崩溃。该指针指向“我们不知道”,然后您将 10 分配给您、我和阅读此答案的其他人都不知道的位置。看到问题了吗?要修复它,您必须将指针初始化为指向某个有效位置,然后您可以取消引用它并无错误地分配给它。

int main()
{
int *p; // uninitialized -- points to who-knows-where
int x = 20;
p = &x; // this is now ok, since p points to x
*p = 20; // now x changes to 20
}

关于c++ - 每次我将第一个整数放入数组时,方法都会崩溃。操作不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22792410/

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