c語言中的指標 p

2021-09-21 07:27:57 字數 1660 閱讀 1413

一、什麼是指標

定義乙個變數,系統會為變數分配記憶體單元,記憶體單元的每乙個位元組有乙個編號,這個編號就是位址,所以這個位址就指向該變數單元,位址形象化地稱為「指標」,也就是說通過它可以找到以它為位址的記憶體單元。

二、指標變數

定義指標變數:

基型別    *變數名 

int *name //整型

char *name //字元型

double *name //雙精度浮點型

float *name //單精度浮點型

...

int i = 1000;

int * point;

point = &i; //&取位址,把1000在的記憶體單元的位址給指標point

注意:

①乙個變數的指標的含義包括兩個方面,一是以儲存單元編號表示的純位址(如編號為2000的位元組),一是它指向的儲存單元的資料型別(如int,char,float等)

② * 指標運算子(或稱「間接訪問」運算子),*p代表指標變數p指向的物件

*p = 1;                  //賦值語句
指標變數還可以作為函式引數

這個函式進行了值的交換,無返回值,

#includevoid swap(int *p,int *q)

int main()

三、通過指標引用陣列

int a[10] = ;

int *p;

p = &a[0]; //元素a[0]的位址賦給指標變數p ①

p = a; //a是陣列名,因此可以表示陣列元素的首位址 ②

所以①和②等價

引用陣列元素的方法:

① 下標法:通過下標分別表示陣列中的每乙個元素,a[0],a[1],a[2],…

② 指標法:通過指向陣列元素的指標找到所需的元素,(a+i),(p+i),

指向陣列的指標的運算(p 為指向陣列中乙個元素的指標)

①加減乙個整數:p + 1;p - 1;

p+1是指向同乙個陣列中的下乙個元素,

②自加自減運算:p++;++p,–p,p–;

③兩個指標之間的運算:p1 - p2(只有兩個指標都指向同乙個陣列中的元素時才有意義)

四、通過指標引用字串

字串是存在字元陣列中,就像這樣

char array[20]= ;

char *p = array;

也可以直接通過指標引用陣列

char *p = ;
二者是等價的,都用了陣列,只是第二個相當於是乙個沒命名的陣列。

五、指向函式的指標

如果想呼叫乙個函式,除了可以通過函式名呼叫以外,還可以同過指向函式的指標變數來呼叫該函式。

int main()

int max(int x,int y)

型別名 (*指標變數名)(函式引數表列)

六、返回指標值的函式

七、指標陣列和多重指標

C 語言中的指標

指標是 c 語言中的精華,正確靈活的運用指標,可以表示複雜的資料結構,動態分配記憶體,方便使用字串和陣列,呼叫函式返回多結果,直接處理記憶體單元等等。位址就是記憶體的編號,如果拿旅店作為記憶體,那麼每個房間號其實就相當於位址了。當程式編譯時,就會對變數分配記憶體單元,分配時按變數型別分配大小。經過編...

C語言中的指標

隨著程式語言的越來越多,但c語言在程式語言中的地位似乎始終沒有改變,其中得益於c語言中的指標,可以直接去操作記憶體位址與暫存器,執行效率也高,在嵌入式領域運用得尤其廣泛。對於初學者來說指標是c語言中很難翻越的一座大山,指標的掌握程度直接關係到c語言的掌握程度,其實指標並不是那麼高不可攀,只是紙老虎而...

C語言中的指標

指標是c語言中非常重要的東西,書本上寫了好多來解釋裡面的原理,當年老師也跟我們講了好多這方面的東西,一直就是感覺沒有聽明白。直到我看到了指向指標的指標,我建立了自己的理解,不知道是否正確,但是基本能解決遇到的問題。int p p i p。type p,宣告指標變數,type 例如int 告訴計算機p...