二維數組的名稱是否像在一維數組中一樣在C中給出其基地址?我怎樣才能將2d數組的基地址存儲在指針變量中?2D數組的名稱是否以C爲基地址?
1
A
回答
3
它衰減到的指針的第一個元素:
int a[5][7];
衰減到
int (*pa)[7] = a;
在實踐中,存儲在pa
的值將是相同的指針,在第一int
元素a
,但獲得指向a
第一個元素的指針的正確方法是使用
int *p_elm = &(a[0][0]);
或等效
int *p_elm = &(pa[0][0]);
然而,請注意,一個指針的第一個元素不能(嚴格)被作爲一個指針指向一個N*M
數組的開始處理;見例如http://www.lysator.liu.se/c/c-faq/c-2.html#2-11
2
Yes並商店作爲地址:
int *p = &a[0][0];
2
2D陣列本質上是一維陣列,其中每個元件本身是一個數組。
該數組的名稱相當於& arrayName [0]。
分配一個指向這個地址與往常一樣,一樣的東西:
int myArray[5][5];
int (*arrayptr)[5] = myArray;
這是說arrayptr
是一個指向5個整數數組。由於myArray
是第一個元素的地址,它是int[5]
,我們的聲明沒有問題。
但是,當您取消引用此指針時,您將獲得第一個元素,它是一個數組。因此,您可以執行如下操作:
(*arrayptr)[3]; // parens necessary for precedence issues
訪問嵌套在「外部數組」的第一個元素內的數組中的第3個元素。 這是
myArray[0][3];
相當於發生了什麼事是你提領arrayptr
這將產生(在這種情況下,大小5)一維數組..然後你問這個一維數組的第4單元。
現在,如果你正在尋找的是矩陣的左上角的「角」,你會想:
int *topleft = &(myArray[0][0]);
0
使用運營商的地址指向基地的偏移。
char base[2][2];
int *basepointer = &base;
相關問題
- 1. 將地址轉換爲函數名稱
- 2. C++ 2d地圖?像2d數組一樣?
- 3. 數組的地址是否等於C++中第一個元素的地址?
- 4. 在C中設置2d數組的起始內存地址?
- 5. 是否可以使用1D索引訪問C++ 2D int數組?
- 6. 我是否正確地爲2D數組添加行和列?
- 7. 是否可以將字符串與2D數組中的數組名稱進行比較?
- 8. 是否可以使用PHP將域名解析爲IP地址?
- 9. 數組的地址與數組[0]的地址 - C語言
- 10. 用於確定IP地址是否爲多播地址的C函數
- 11. 基於名稱的C#顯示組件
- 12. 作爲數組的地址返回的地址是什麼?
- 13. 是否使用「組名稱」
- 14. 數組基址指針和它的地址是一樣的。爲什麼?
- 15. 是否可以爲數組中的值存儲數字和名稱?
- 16. 在C中,數組中第一個元素的地址是否與數組的地址相同?
- 17. 如何檢查數組中的元素是否爲地址?
- 18. Geth名稱而不是地址
- 19. 在C中的二維數組中,爲什麼二維數組的第一個元素的基地址和第一行的基地址是相同的?
- 20. 爲什麼用戶/名稱/帖子/名稱地址是相同的(fiendly_id)
- 21. C++數組輸出地址?
- 22. 數組c地址混淆
- 23. 基於2個參數將數組拆分爲2D C#
- 24. 添加地址簿像名稱數組中的字母
- 25. 是否可以使用SSRS數據集名稱作爲參數?
- 26. 是否可以創建一個變量名稱數組?
- 27. Php 2d數組作爲C#2d數組/結構體
- 28. 是否可以基於它的名稱實例化佈局?
- 29. https地址欄中的公司名稱和地址欄中的公司名稱
- 30. FormStack,PHP:作爲嵌套數組的名稱和地址字段的POST信息