gpt4 book ai didi

C, 为什么函数不接受来自 txt 文件的二维数组作为参数?

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:42 27 4
gpt4 key购买 nike

这是我的 C 代码和 .txt 文件。我想使用 .txt 文件中的二维数组作为函数参数。但是,当我运行这段代码时,程序在调用函数行时给出错误:

[Error] cannot convert 'int (*)[C]' to 'int (*)[3]' for argument '1' to 'int rec_ped(int (*)[3], int)'.  

换句话说,我的函数 rec_ped 无法接受 .txt 文件中的二维数组。

你能帮我解决这个问题吗?

#include <stdio.h>

int rec_ped(int k[18][3], int idx) {
int sire, dam;

sire = k[idx - 1][1];
dam = k[idx - 1][2];

printf("%d ", sire);

if (sire != 0)
rec_ped(k, sire);

if (dam != 0)
rec_ped(k, dam);
}

int main() {
int R = 18;
int C = 3;

int A[R][C];
FILE *fp;
int i, j;
fp = fopen("t.txt", "r");

for (i = 0; i < R; i++) {
for (j = 0; j < C; j++) {
fscanf(fp, "%d", &A[i][j]);
}
}

for (i = 0; i < R; i++) {
for (j = 0; j < C; j++) {
A[i][j];

rec_ped(A, 18); // <--- there is error!!!
}
}

return 0;
}

我的文件是a.txt如下;

1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 1 3
7 1 5
8 0 2
9 4 6
10 0 0
11 1 0
12 4 10
13 7 11
14 1 6
15 13 0
16 1 15
17 4 14
18 16 17

最佳答案

当数组衰减为指针时,它仅适用于最外层的数组维度。它适用于内部维度。所以 int (*)[3]int (*)[C] 不一样,即使 C 恰好是 3函数被调用的时间。在这种情况下,不能将固定大小数组和可变长度数组视为相同。

然而,您可以做的是将数组的维度作为参数传递:

int rec_ped(int rows, int cols, int k[rows][cols], int idx) {

然后你可以这样调用它:

rec_ped(R, C, A, 18);

关于C, 为什么函数不接受来自 txt 文件的二维数组作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53230695/

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