二級指標偏移

2021-09-07 14:21:35 字數 570 閱讀 2232

#include void test_fuc(int b[3

])int main(void),,};

test_fuc(a);

printf(

"a[2][1]=%d\n

",a[2][1

]);

return0;

}

輸出:

陣列當做函式引數的時候,會退化成指標,但是只退化一次,int b[3]作為引數會變成(*b)[3];b是乙個指標,指向乙個陣列,陣列含有3個int型別的元素。++b之後,注意我們b的型別,一旦移動乙個步長,相當於移動3個int位置,所以++b之後,b指向的是a[1][0];然後b[1][1];相當於b又移動了1個步長,即移動3個int位相當於對應a[2]了,在b[1]的基礎上,再使用[1],相當於對應a[2][1];所以最後列印a[2][1]等價於b[1][1].

平時我們習慣使用這樣的下標運算代替指標運算,但是我們要清楚乙個道理,b[1][1]等價於*(*(b+1)+1).

二級指標偏移

include void test fuc int b 3 int main void test fuc a printf a 2 1 d n a 2 1 return0 輸出 陣列當做函式引數的時候,會退化成指標,但是只退化一次,int b 3 作為引數會變成 b 3 b是乙個指標,指向乙個陣列,...

二級指標的偏移

假如讓每個指標指向商品資訊,排序比較時,我們比較實際商品資訊,但交換的是指標,這樣交換成本極大降低,這種思想稱為索引式排序。指標陣列 儲存了多個指標的陣列 char p 5 sizeof 為5sizeof char 20 陣列指標 指向一維陣列的指標,char p 5 sizeof 為4 inclu...

指標與二級指標

int num 10 int p1 int p2 p1 指標的指向結構如下圖所示 0x4000 0x3000 p2 0x2000 p1 num p2 表示的是儲存p2指標的位址 p2 表示的是p2指向的位址,即指標p1存放的位址 p2 表示指標p2指向位址中所存的值,即指標p1指向的位址,即變數nu...