Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何成功地将2D数组传递给函数?_C_Arrays - Fatal编程技术网

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

C 如何成功地将2D数组传递给函数?,c,arrays,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)); 然后它就不起作用了(例如,假设sum最初是1,*(a+(i+1)*n+(j+1)是4),然后求和它应该给我5。,但它给我1作为输出

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));
然后它就不起作用了(例如,假设sum最初是1,
*(a+(i+1)*n+(j+1)
是4),然后求和它应该给我5。,但它给我1作为输出…为什么?? 甚至,当我在
printf
函数中调用相同的值
*(a+(I+1)*n+(j+1))
时,只需查询一下,它就会给我4(原始值)作为输出


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

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

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

如果你能正确地发布你的函数,这会更容易帮助你。但是我认为你在表达式前面放*时有一个错误,它会给出表达式的内容,所以一定要正确地获取值。 例如:

      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).

我希望这个答案对您有所帮助。如果没有,请告诉我。祝您好运!

这里是什么意思?请显示您尝试的代码,正确格式化。stackoverflow.com帮助介绍了如何格式化。您需要显示更多代码(但仍然不是所有代码),例如,我假设你有一个for循环来解析你的矩阵,边界可能会有一些问题。实际上很奇怪,你必须在索引中添加1。你还展示了如何/何时初始化sum。为什么不使用:
a[(I+1))*n+(j+1)]
?使用现代编译器和现代优化器,您应该会得到相同的结果。尝试基准测试。请将代码粘贴到此处。。所以我可以给你适当的解决办法。