gpt4 book ai didi

无法访问函数 C 中的 2 DIM 数组

转载 作者:行者123 更新时间:2023-11-30 15:22:41 25 4
gpt4 key购买 nike

我有一个有趣的问题。我一直在尝试找到一种方法将我的 2DIM 数组传递到函数中,但我仍然失败得很厉害。

所以我从另一个函数获取 sizeX 和 sizeY,该函数在用户加载数组后调用。

...

   int sizeX = surf->settings->x;   // getting one dimension of the array
int sizeY = surf->settings->y; // getting second dimension of the array
int** mirrorArray[sizeX][sizeY]; // create 2DIM array (I think this is perhaps wrong?
for (int i = 0; i < sizeX; i = i+1 ) { // filling it up with some zeros
for (int j = 0; j < sizeY; j++ ) {
mirrorArray[i][j] = 0;

}}

readArray((int **)mirrorArray, sizeX, sizeY); // now i would like to read the array (also maybe a source of my problems?)

这是我的阅读功能

void readArray(int *p[], int m, int n) {

for (int i = 0; i < m; i = i+1) {
for (int j = 0; j < n; j++) {
printf("p[%i][%i] = %i \n", i, j, p[i][j]);
}
}

}

我真的很沮丧。即使我尝试访问数组中的第一个元素,我也会遇到段错误(核心转储):/如果我不创建该函数,而只是在用零填充数组后使用读取算法,则一切正常,但我确实需要实现该函数。谁能告诉我我做错了什么吗? :) 非常感谢。

我还是不明白,每个回复都非常有用:)

最佳答案

您需要在数组参数上指定行数和列数。以下内容在 C99 中有效:

void readArray(int m, int n, int p[m][n]);

请注意,我需要在此声明中将数组大小放在数组之前。现在该函数可以调用为:

int sizeX = surf->settings->x;   // getting one dimension of the array
int sizeY = surf->settings->y; // getting second dimension of the array
int mirrorArray[sizeX][sizeY]; // create 2DIM array
readArray(sizeX, sizeY, mirrorArray);

关于无法访问函数 C 中的 2 DIM 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29126812/

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