如何成功将2D数组传递给函数?

时间:2015-03-31 12:40:25

标签: c arrays

GNU GCC编译器 这是一个函数:int sumsintriangle(int *a,int n) 其中a是n * n矩阵。   出于某种目的,我添加了

if(*(a+(i+1)*n+(j+1)) > *(a+(i+1)*n+j))

条件到我的代码正常工作;因为条件对于正确的值是正确的。    但是当我添加

时使用相同的代码
sum=sum + *(a+(i+1)*n+(j+1));

然后它不起作用(例如;假设总和最初是1而*(a+(i+1)*n+(j+1)是4)然后总结它应该给我5 ..但它给我1作为输出...为什么?  甚至,当我在*(a+(i+1)*n+(j+1))函数中调用相同的值printf时,仅仅为了查询,它给了我4(原始值)作为输出......?

为什么会这样,*(a+(i+1)*n+(j+1))printf一起正常工作但是当我用它来调用它时,它会给我不正确的值?

2 个答案:

答案 0 :(得分:0)

使用此代码可能是它的工作。

*(a+(i+1))*n+(j+1)

答案 1 :(得分:0)

如果您可以正确发布您的功能,可能更容易帮助您。但是我认为你在表达式之前放*会给你那个表达式的内容时会出错,所以一定要正确地得到这些值。 例如:

      int a[]; //declare an array
      a[n] // will give you the element in position 9 of the array.
      *a // will give you the first element, cause an array can be treated as a pointer (indeed it is).

我希望这个答案可以帮到你。如果没有,请告诉我。祝你好运!