2015-03-31 69 views
-1

GNU GCC編譯器 這是一個函數:int sumsintriangle(int *a,int n) 其中a是一個n×n矩陣。 爲了某種目的,我添加如何成功將2D數組傳遞給函數?

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..but它給了我應該給我1作爲輸出...爲什麼? 即使當我在printf函數中調用相同的值*(a+(i+1)*n+(j+1))時,對於只是一個查詢,它會給我4(原始值)作爲輸出...?

爲什麼*(a+(i+1)*n+(j+1))printf正常工作,但是當我用sum調用它時,它給了我不正確的值?

+0

這裏N是什麼表示? – Logicbomb 2015-03-31 12:46:39

+1

請顯示您的嘗試代碼,格式正確。 stackoverflow.com幫助描述瞭如何格式化。 – lurker 2015-03-31 12:48:39

+0

您需要展示更多的代碼(但仍然不是*您的所有代碼),例如我想你有一個for循環來解析你的矩陣,可能會有一些邊界問題。實際上**很奇怪,你必須給索引加1。您還顯示瞭如何/何時初始化總和。 – Antonio 2015-03-31 12:56:35

回答

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

我希望這個答案能幫助你。如果不是,請告訴我。祝你好運!

0

使用此代碼可能是其工作。

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

沒有不工作,.. – trash 2015-03-31 13:10:59

+0

請粘貼你的代碼在這裏..所以我可以給你適當的解決方案。 – Logicbomb 2015-03-31 13:15:33