通過陣列名訪問陣列元素的一些常見小計算

2021-08-20 07:08:29 字數 1235 閱讀 5774

陣列名的含義有以下幾種情況:

1.陣列名在如下情況表示整個陣列:

(1);在定義陣列的同乙個函式,求sizeof(arr)

(2):在定義陣列的同乙個函式,&arr+1

2.其他情況下陣列名表示陣列首元素的位址

我們先定義乙個一維陣列:

int main()

;//聚合型別 初始化一部分剩餘部分為0;

printf("%x\n", arr);//

代表的是陣列首元素的位址,

printf("%x\n",&arr[0]);//

對首元素取位址,與arr相同

printf("%x\n", &arr);//

與前兩種情況相同

printf("%x\n", &arr + 1); //

跑整個陣列

printf("%x\n", arr + 1);//

首元素位址加1,即第二個元素的位址

printf("%x\n", &arr[0] + 1);//

與前一種情況相同

printf("%d\n", *arr + 1); //  2

對首元素的位址解引用

printf("%d\n", *(arr + 1)); //  2,

先對首元素位址加1在進行解引用

return 0;

對於二維陣列來言:把每個二維陣列裡的一維陣列看成乙個元素

int main()

, , 8, 9, 10 };//三行四列的乙個二維陣列

printf("%x\n", arr); //  陣列的首位址

printf("%x\n", &arr + 1); // 加整個二維陣列

printf("%x\n", arr + 1);  // 加一行

printf("%x\n", arr[0]);//第乙個一維元素的首元素的位址,也是二維陣列首元素的位址

printf("%x\n", &arr[0] + 1); // 加一行

printf("%x\n", arr[0] + 1); // 第乙個一維元素的首元素的位址+1,即加乙個元素

printf("%x\n", arr[0][0]); // 第一行第乙個元素的值

printf("%x\n", &arr[0][0] + 1); // 第一行第二個元素的位址

printf("%x\n", arr[0][0] + 1);  // 值加1

這裡需要注意的是二維陣列的首位址也是二維陣列裡面的第乙個一維陣列的首元素的位址

關於陣列名和指標的一些知識點

1 陣列名可以看做指向陣列首元素的指標。這裡做了隱式轉換 char p2 this is a string 這是c語言風格的字串。2 不存在從指標轉到陣列的轉換。3 陣列可以使用範圍for迴圈 char v this is a string for auto c v 4 不能以值傳遞的方式將陣列傳給...

指標 陣列名與陣列首元素位址的關係

陣列名等價於等同於指向陣列首元素的指標!作 者 hh 完成日期 2018年7月15日 版本號 v1.0 問題描 指標 陣列名與陣列首個元素位址的關係!輸入描述 程式輸出 includeint main printf d n a 輸出陣列名!printf x n a 輸出16進製制的陣列名!print...

乙個關於陣列名的例題

原題 include int main int p1 int array 1 int p2 int array 1 char p3 null int a p1 2 p2 sizeof array sizeof p3 printf d a return 0 輸出 11其中部分疑問?include in...