gpt4 book ai didi

c - 如何以相反的方式填充二维数组 - C

转载 作者:行者123 更新时间:2023-11-30 15:23:01 26 4
gpt4 key购买 nike

我试图以相反的方式填充二维数组,但我总是遇到相同的错误:核心转储。

当我说相反的方式时,我的意思是,通常我们会做类似的事情

for(int i=0; i<MaxColumns; i++)
for(int b=0; i<MaxRows; b++)
array[i][b] = random value;

我想要做的是对于每一行,我想在每一列上填充该单行,然后传递到下一行并执行相同的操作。此时,我为每列动态声明一个新行。

这就是我正在尝试的:

int i = atoi(argv[1]);
int **array = (int**)malloc(i * sizeof(int*));
for (lines =0; lines <MAXLINES; lines ++) {
for (colunms =0; colunms <i; colunms ++) {
array[colunms] = (int*)malloc(1 * sizeof(int));
v=colunms+lines;
array[colunms][lines]=v;
}
}

错误继续:

array[colunms][lines]=v;

------ 问题的最后更新 ----

已经更新,虽然我尝试了这段代码

for (lines =0; lines <MAXLINES; lines ++) { 
array[colunms] = (int*)malloc(colunms * sizeof(int));
for (colunms =0; colunms <i; colunms ++) {
v=colunms+lines;
array[colunms][lines]=v;
}
}

我不断地收到核心转储:

    array[colunms][lines]=v;

最佳答案

这很简单。而不是:

for(int i=0; i<MaxColumns; i++)
for(int b=0; i<MaxRows; b++)
array[i][b]=random value;

用途:

for(int b=0; i<MaxRows; b++)
for(int i=0; i<MaxColumns; i++)
array[i][b]=random value;

您的错误在于:

array[colunms] = (int*)malloc(1 * sizeof(int));

您正在为 int1 元素分配空间,而您应该为 columms * sizeof(int) 分配空间。您还应该在内循环之外执行此操作,如下所示:

int **array = (int**)malloc(MAXLINES * sizeof(int*)); 
for (lines =0; lines <MAXLINES; lines ++) {
array[lines] = (int*)malloc(i * sizeof(int));
for (colunms =0; colunms <i; colunms ++) {
v=colunms+lines;
array[lines][colunms] = v;
}
}

此外,即使此代码应该可以工作,但将来将其假设为 array[columms][lines] ,而它应该是 array[lines][ ,这可能会出现问题列]

为什么?因为使用 array[lines][columms],每个 array[line]代表一个完整的行及其所有列,这对于大多数情况来说更实用。

在这种形式中,您将能够声明处理单个记录的函数,而不是传递整个“表”。

关于c - 如何以相反的方式填充二维数组 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28931825/

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