【问题标题】:Find the sum in 2d array with pointers in c用c中的指针在二维数组中求和
【发布时间】: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 (&amp;a[0])调用函数来匹配声明。

标签: c arrays pointers 2d


【解决方案1】:

您忘记在函数中返回 sum 的值

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);
        }
    }
    return sum; /* HERE */
}

请注意

sum = sum + array[i][j];

更具可读性
sum = sum + *(*( array +i )+j);

【讨论】:

  • 它现在是 "sum=1"
  • 是的,我知道,但练习要求使用指针找到数组的总和
猜你喜欢
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 2017-04-26
相关资源
最近更新 更多