gpt4 book ai didi

c - 二维数组和指针。

转载 作者:行者123 更新时间:2023-11-30 21:36:39 24 4
gpt4 key购买 nike

{
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);
}
}
}

我在传递二维数组时遇到错误,而且它的“a”未声明。请帮我解决这个错误!

最佳答案

表达式中的数组(例如用作参数时)将转换为指向其第一个元素的指针。

如果你有一个像这样的数组

int a[10][10];

可以重写为

int ( a[10] )[10];

也就是说,它是一个由 int[10[> 类型的 10 个元素组成的数组,然后在表达式中将其转换为 int ( * )[10] 类型,

例如你可以写

int ( a[10] )[10] = { {1,2,3}, {4,5,6}, {7,8,9} };
int ( *p )[10] = a;

因此函数应该这样声明

int FindSumLeavingOutRowCol( int arr[][10], int m, int n, int k,int l);

这与

相同
int FindSumLeavingOutRowCol( int ( *arr )[10], int m, int n, int k,int l);

如果编译器支持可变长度数组,并且变量 mn 表示维度(而不是范围),则该函数也可以这样声明

int FindSumLeavingOutRowCol( int m, int n, int arr[m][n], int k,int l);

int FindSumLeavingOutRowCol( int m, int n, int arr[][n], int k,int l);

或者类似

int FindSumLeavingOutRowCol( int m, int n, int ( *arr )[n], int k,int l);

否则,您将需要添加另外两个参数来指定尺寸之外的范围。

注意变量sum没有初始化

int sum,i,j;

因此该函数将具有未定义的行为。

此外,参数被声明为名称 arr 而不是 a

我希望该函数有一个类似的 return 语句

return sum;

关于c - 二维数组和指针。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47134732/

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