C語言指標的學習要點

2021-09-02 10:33:24 字數 1474 閱讀 1132

指標的定義

變數的指標,其含義是指該變數的位址

指標和指標變數

指標是乙個位址,指標變數是存放位址的變數

兩個運算子

*是指標運算子,也叫"間接訪問"運算子,*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.程式這次執行正常下次執行...