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 作为输出...为什么?
甚至,当我调用相同的值 *(a+(i+1)*n+(j+1))
时在printf
函数,只是为了查询,它给我 4(原始值)作为输出...?
为什么会这样,*(a+(i+1)*n+(j+1))
与 printf
正常工作但是当我用 sum 调用它时,它给了我不正确的值?
最佳答案
如果您可以正确发布您的功能,可能会更容易为您提供帮助。但我认为当您在表达式之前添加 * 时会出现错误,这将为您提供该表达式的内容,因此请务必正确获取值。 示例:
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).
希望这个回答对你有帮助。如果没有请告诉我。祝你好运!
关于c - 如何成功地将二维数组传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29368935/