gpt4 book ai didi

c - 在函数 : Error 中使用二维数组

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

我尝试在二维数组中设置值并使用函数打印它。

但是我在将数组发送到函数时遇到了问题。

#include <stdio.h>

void SetArr(int (*arr)[], int n);
void PrintfArr(int (*arr)[], int n);

int main()
{
int arr[100][100];

for(int i=0; i<100; i++)
for(int j=0; i<100; j++)
arr[i][j]=0; //initiallize Array

int size;

printf("input Size : "); scanf("%d", &size);

SetArr(arr, size);
PrintfArr(arr, size);

return 0;
}

void SetArr(int (*arr)[], int n)
{
int i, j;

for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
arr[i][j]=i+j; // Error! "Subscript of Pointer to imcomplete~
}
}

void PrintArr(int (*arr)[], int n)
{
int i, j;

for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%d", arr[i][i]); // Error! "Subscript of Pointer to imcomplete~
}
printf("\n");
}

如你所见,这两个函数在使用“arr[][]”时遇到了同样的问题

最佳答案

在函数的声明中,必须提及数组及其大小(长度)。这就是编译器说“不完整类型”时的意思:它需要大小来理解如何访问其元素。

为了使编译器可以使用大小,它应该在函数声明中放在首位:

void SetArr(int n, int (*arr)[n])

这里 arr 在技术上是“指向 n 元素数组的指针”,但在 C 中习惯将指针视为数组,所以 arr 可以被视为“n 元素数组的数组”,这与二维数组相同。

您可能想提及数组的两个维度:

void SetArr(int n, int arr[n][n])

这相当于第一个声明,但看起来更清楚。

关于c - 在函数 : Error 中使用二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27592636/

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