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
一起正常工作但是当我用它来调用它时,它会给我不正确的值?
答案 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).
我希望这个答案可以帮到你。如果没有,请告诉我。祝你好运!