C語言 指針數組學習小記

在項目開發過程中,遇到了指針數組的相關使用,發現了自己的一些不足之處,以此做個小小的學習記錄。

 

實際開發場景是對結構體中的一個結構體指針數組對象的操作,這裏把問題簡化:現在需要對指針數組所指向的內容賦值,如有int *a[5],現有int *b指向a,需要對a指向的內容進行操作。

需要確認問題:在對b賦值時,b=a還是b=a[0]

原代碼寫法及調試可以看到:

調試結果:這裏b的值=a的值=c的地址,

b[0]=a[0],對b[0]賦值時,只是對a[0]賦值,並沒有對a指向的實際的數組c內容賦值。

結果分析:c是size爲5的int數組,a是size爲5的int類型的指針數組,每個指針a[i]指向c[i]的地址。b是一個int類型指針。 語句b=a,則b的值是a的值,即a[0]的地址,b[0]的內容就是a[0]。

 

所以正確的做法是:執行語句b=a[0],纔是我們想要的結果。此時b的值是a[0]的值,即c的地址。這樣b[0]對應的纔是c[0]的內容。

調試結果如下圖所示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章