以下**輸出什麼__.
1 2
3 4
5 6
main()
; int p=(int )(&a+1);
printf(「%d」,*(p-1));
} 正確答案: c
1 2
5 出現錯誤
選擇c,&a表示乙個指向大小為5陣列的指標,那麼&a+1就是表示乙個指向大小為5的下乙個陣列的指標,也就是陣列a最後乙個元素的下乙個位置,那麼int*p=(int*)(&a+1)進行強制型別轉換,將指向陣列的指標轉換為指向第二個陣列中首元素的指標,所以p-1則是指向第乙個陣列中最後乙個元素的指標,所以輸出是5
或者:
陣列名a可以作為陣列的首位址,而&a是陣列的指標。int p=(int )(&a+1);//這條語句中&a代表整個陣列的位址,+1應加上sizeof(a)的長度,故指標p指向a[5]處。printf(「%d」,(*p-1));//(*p-1) == a[4],語句輸出a[4]的值,為5,答案 c
指標與指標位址
int urn size urn 0 100 urn 1 200 urn 2 300 urn 3 400 urn 4 500 int ptr1,ptr2,ptr3 ptr1 urn ptr2 urn 2 printf 當前指標的值和位址 printf ptr1 p,ptr1 d,ptr1 p n p...
高階指標的運用
首先來複習一下指標與陣列 陣列 存放相同型別資料的集合 和陣列類似的還有結構體,結構體是存放不同型別資料的集合 需要注意的是 雖然指標和陣列在這裡被拿來一起比較,但它們是兩種型別,沒有關係。只是有相同或相似的特性。看一下下面的 及其執行結果 printf d n strlen p 報錯,型別不同 s...
C 指標運用
前提 計算機裡,記憶體調取變數,需要知道變數的實體地址,相當於現實生活中的地標,當鎖定地標之後,程序從記憶體呼叫變數時才能做到精確無誤。而我們指標就提供了地標值,哲學上通俗的說,在一定時間內地標值精確的代表了一棟房子,我們可以說當我們說起地標值,就相當於說起了房子,當我們說起了房子,也就是地標值。指...