C語言指標的學習要點
阿新 • • 發佈:2018-12-03
-
指標的定義
變數的指標,其含義是指該變數的地址 -
指標和指標變數
指標是一個地址,指標變數是存放地址的變數 -
兩個運算子
*是指標運算子,也叫"間接訪問"運算子,*p代表指標變數p指向的物件。&是取地址運算子,&a是變數a的地址。
-
例題:int *point,a=4; point=&a;
下面均代表地址的一項是()
A. point, *&a
B. &*a,&a,*point
C. *&point,&*point,&a
D. &a,&*point,point
首先
其次,我們知道 * 是取指的符號,那麼意思就是 *point=a=4; 那麼我們就大致可以開始判斷。
A選項 point 代表地址, *&a 的意思是 取a地址中的值 那麼A選項排除
B選項 &*a 該表示式錯誤,原因是未定義指標變數a ,&a正確, *point=4錯誤
C選項 *&point表示式錯誤,因為point就代表地址,加&錯誤;&a正確, *point=4錯誤
D選項 需要講解的就是 &*point,首先要清楚 運算子優先順序,*是大於&的,所以先
取值 就是取a的值,然後再取a的地址。所以 答案選 D -
通過指標引用陣列
注意引用陣列的時候 int *p,a[10]
p=a和p=&a[0]等價
意思就是陣列名不代表整個陣列,而是把首元素的地址賦給指標變數p -
引用陣列元素時指標的運算,看 例題:
#include<stdio.h> int main() { int x[] = {10,20,30}; int *px = x; printf("%d,",++*px); printf("%d,",*px); px=x; printf("%d,",(*px)++); printf("%d,",*px); px=x; printf("%d,",*px++); printf("%d,",*px); px=x; printf("%d,",*++px); printf("%d,",*px); return 0; }
輸出結果:
其中 *px++ 和 *++px都是陣列下標加1的意思
那麼 ++*px 和 (*px)++ 就是值的自增了。
這個帖子大多都是很基礎的東西,但是用起來的時候 總是需要基礎作為支撐。因此比較繁瑣,也希望自己能夠記得牢固,