【发布时间】:2018-04-18 11:39:01
【问题描述】:
{
int a[10][10]={{1,2,3},{4,5,6},{7,8,9}};
int n;
n=FindSumLeavingOutRowCol(a, 3,3,1,2);
printf("%d",n);
}
int FindSumLeavingOutRowCol(int** arr, int m, int n, int k,int l)
{
int sum,i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if((i==k)&&(j==l))
{
;
}
else{
sum+=*(*(a+i)+j);
}
}
}
我在传递 2 d 数组时遇到一个错误,它告诉 'a' 未声明。请帮我解决错误!
【问题讨论】:
-
第一步:格式化此代码,使其可读。此外,我们需要minimal reproducible example,因此复制和粘贴、编译和运行可以重现您的问题。
-
a未声明不是错误。稍后编译代码时会出现错误...这里似乎a声明在与函数不同的(非全局)范围内,因此不可见。 -
顺便说一句,
a的类型为int [10][10],因此在调整为指针后,这是int (*)[10]而 不是int **,正如您的函数所期望的那样。跨度> -
sum+=*(*(a+i)+j);中的变量a没有被声明,也没有被初始化。编译器试图找到它,但它无法找到它。也许你打错了或想使用另一个变量。 -
二维数组不是指针数组!您可以查看我的另一个 answer 以了解更多详细信息(是 C++,但对于原始数组来说完全一样)
标签: c arrays multidimensional-array