gpt4 book ai didi

c - 如何在另一个函数中访问这个二维数组?

转载 作者:行者123 更新时间:2023-11-30 20:43:33 25 4
gpt4 key购买 nike

我有这两个功能:

void insert(void) //inserts values in the bidimensional array
{
int array[d][d]; // d is the value given by the user elsewhere
int a = 0;
for (int i = 0; i < d; i++){
for (int j = 0; j < d; j++){
array[i][j] = (d*d) - a;
a++;
}
}
}

void show(void) //prints the values
{
for (int i = 0; i < d; i++){
for (int j = 0; j < d; j++){
printf("%d", array[i][j]);
}
printf("\n");
}
}

我的问题是 show() 函数仅打印零 (0),但这些不是正确的值。

我知道这些值插入正确,因为当我输入 printf("%d", array[i][j]); 时在 insert() 函数的循环内,它正常打印。所以我的猜测是 show() 函数不会访问数组的值,因为它是在另一个函数中声明的。

因此,我尝试将该数组全局化,将其写入函数外部,但它给了我错误:“文件范围内不允许使用可变长度数组声明”,因此我尝试将其放在 main() 内,然后再调用上面的两个函数,但我得到了另一个错误:“未使用的变量'数组'”。

那么谁能帮我弄清楚如何在 show() 函数中访问该数组?

附注我想要两个函数:一个用于获取,另一个用于显示数字,我不想要单个函数。

最佳答案

#include <stdio.h>
#include <stdlib.h>

void *Array = NULL;
int D;

void insert(void){
int (*array)[D] = Array;
int a = 0;
for (int i = 0; i < D; i++){
for (int j = 0; j < D; j++){
array[i][j] = (D*D) - a;
a++;
}
}
}

void show(void){
int (*array)[D] = Array;
for (int i = 0; i < D; i++){
for (int j = 0; j < D; j++){
printf("%3d ", array[i][j]);
}
printf("\n");
}
}

int main(void){
D = 5;
Array = malloc(sizeof(int [D][D]));
insert();
show();
free(Array);

return 0;
}
<小时/>

int main(void){
D = 5;
int array[D][D];
Array = array;
insert();
show();

return 0;
}

关于c - 如何在另一个函数中访问这个二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771084/

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