我想了解多維數組和指針,寫了這個小程序來理解這個概念:爲什麼我們需要使用雙指針來訪問2-D數組?
#include<stdio.h>
void show(int arr[][2]);
int main()
{
int z[2][2] = { { 1, 2 },
{3, 4 } };
show(z);
}
void show(int arr[][2])
{
printf("value of arr = %d", arr);
printf("\n\nvalue of &arr[0]0] = %d", &arr[0][0]);
}
這段代碼打印這是有道理的相同的地址,但是當我編輯的顯示功能:
void show(int arr[][2])
{
printf("value of *arr = %d", *arr);
printf("\n\nvalue of arr[0]0] = %d", arr[0][0]);
}
* arr仍然打印相同的地址,而arr [0] [0]如預期打印整數值,我想知道爲什麼我需要使用** arr獲取int值,如果arr存儲地址應該用* arr解除引用,不是嗎?
請幫助我真的很難理解這個概念..在此先感謝。
這將有助於停止地址方面的思考。指針可以用內存地址來實現,但它們不是地址,將它們當作地址將會以多種方式混淆你,而不僅僅是這個。 – user2357112
@ user2357112你能否請我介紹一些很好的文字,我可以理解這個概念。 – mightyWOZ
'* array_or_pointer'與C中的array_or_pointer [0]相同(類型和值)。 – hyde