指標的定義
變數的指標,其含義是指該變數的位址
指標和指標變數
指標是乙個位址,指標變數是存放位址的變數
兩個運算子
*是指標運算子,也叫"間接訪問"運算子,*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的位址,那麼 point 和 &a 就是代表位址
其次,我們知道 * 是取指的符號,那麼意思就是 *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
引用陣列元素時指標的運算,看 例題:
#includeint main()
; 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)++ 就是值的自增了。
這個帖子大多都是很基礎的東西,但是用起來的時候 總是需要基礎作為支撐。因此比較繁瑣,也希望自己能夠記得牢固,
C語言指標要點
乙個有效的指標必然是以下三種狀態之一 儲存乙個特定物件的位址 指向某個物件後面的另乙個物件 或者是0值 注意只能是0常量的表示式,或者直接0。絕對不能來個變數0 int pi2 ival pi2 0 int pi3 dangerous,because pi3 is uninitialized一定要避...
C語言要點
一關鍵字 1.static 第乙個作用 修飾變數。變數又分為區域性和全域性變數,但它們都存在記憶體的靜態區。由於被static修飾的變數總是存在記憶體的靜態區,所以即使這個函式執行結束,這個靜態變數的值還是不會被銷毀,函式下次使用時仍然能用到這個值。static int j void fun1 vo...
C語言學習要點記錄
1.運算的優先順序 算數 關係 邏輯 賦值 逗號運算子 2.複製是程式不良的表現 因為一旦乙個地方有變動要在很多地方修改 3.程式設計的過程中最好使用單一出口 4.本地變數在定義的時候不會預設初始化,引數在定義的時候一定要初始化 5.本地變數的生存期和作用域在定義的塊內 6.程式這次執行正常下次執行...