【发布时间】:2016-02-23 19:40:08
【问题描述】:
我已经尝试过了,但我得到“sum=6”,这是错误的。 代码有什么问题? 代码如下:
#include <stdio.h>
#define ROW 2
#define COL 3
int sum(int(*array)[3]);
int main(void)
{
int a[ROW][COL] = { {1 , 2, 3} ,
{4 , 5, 6} };
printf(" sum = %d\n", sum (a));
return 0;
}
int sum(int(*array)[3])
{
int i,j, sum = 0;
for (i =0; i < ROW ; i ++) {
for (j =0; j < COL ; j ++) {
sum = sum + *(*( array +i )+j);
}
}
}
【问题讨论】:
-
1) 缩进你的代码。 2)你实际上并没有在你的
sum函数中的任何地方returnsum;你只是计算它。 -
不要使用幻数!您已经有了具有数组维度的宏,那么为什么不在函数声明器中也使用它们呢?或者作为带有尺寸的 VLA 传递。
-
并且你需要用
sum (&a[0])调用函数来匹配声明。