陣列指標和指標陣列 原理 及 異同

2021-07-15 04:17:57 字數 1104 閱讀 2886

#includeint main()

; //陣列指標 (二維陣列)

char (*p)[4]; //陣列指標

p=c;

//乙個指標 指向乙個 至多有4個字元 的 字串陣列 該陣列儲存在棧區

//該字串陣列的記憶體空間已經分配好了 而且這些字元在 記憶體空間中是連續的

char *pch[6] = ; //指標陣列

//乙個陣列 儲存6個指標 每個指標指向乙個常量區字串

//相同點:

//指標陣列 和 陣列指標 的 元素 都可以通過 解引用 和 下標運算 得到

for(int i=0; i<3; i++)

printf("%s %s\n", p[i], *(p+i));

printf("\n");

for(int i=0; i<3; i++)

printf("%s %s\n", pch[i], *(pch+i));

printf("\n");

// 不同點1 :

// 乙個的字串儲存在棧區 乙個儲存在常量區

// 常量區的值不可修改

printf("修改前: %s\n", p[0]);

p[0][0] = '6'; //正確

printf("修改後: %s\n\n", p[0]);

pch[0][0] = '2'; //錯誤

//常量區的值不可修改

// 不同點2:

p[1] = "22"; //錯誤

//禁止這樣修改

//因為修改後可能導致字串陣列長度改變

//整個二維陣列的記憶體就不再是連續的了

printf("修改前: %s\n", pch[0]);

pch[0] = "666"; //正確

//該指標指向乙個新的 常量區字串

printf("修改後: %s\n\n", pch[0]);

printf("%s\n", pch[0]);

return 0;

}

陣列指標和指標陣列

陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...

陣列指標和指標陣列

一 定義 陣列指標 陣列指標 是指向陣列 首元素的位址的 指標,其本質為指標 這個指標存放的是陣列首位址的位址,相當於2級指標,這個指標不可移動 指標陣列 陣列元素為指標的陣列,其本質為陣列。二 舉例 int a 3 4 這個無需多說,就是乙個 二維陣列 int p 4 就相當於int p 4 它就...

陣列指標和指標陣列

這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an ar...