指標的總結

2021-10-05 15:48:20 字數 2373 閱讀 9428

從指標的基本概念可以理解,在計算機中,資料是儲存在計算機的儲存單元中,每個儲存單元都有乙個編號,指標就是對應著儲存單元的編號,根據指標就可以找到資料儲存的位址。

指標的型別是指標本身所具有的型別,一般去掉指標變數名,就是指標的型別。

int*p;//指標的型別是int*

char*p;//指標的型別是char*

int(*p)[3];//指標的型別是int(*)[3]

指標所指向的型別是指指標所指向的變數的資料型別,把*和指標變數名都去掉後,留下的就是指標所指向的型別。

int*p; //指標所指向的型別是int

char*p; //指標所指向的的型別是char

int**p; //指標所指向的的型別是int*

int(*p)[3]; //指標所指向的的型別是int()[3]

int*(*p)[3]; //指標所指向的的型別是int*()[3]

指標定義的方式:型別說明符 * 指標變數名

賦值方式有兩種:

(1)初始化時進行賦值:

int a=1;

int *p=&a;

(2)先定義後賦值

int a=1;

int *p;

p=&a;

例如:

main()
上述將int型變數a的位址給了指標p,對p取內容為a的值5,輸出結果為5

指標自身可以加乙個數或者減乙個數,代表指標向前或向後移動了n個位置,例如指標p的運算:p++,p–,p+n

兩個指標之間只能進行減運算,表示兩個位址之間的位移量,加法和其他運算對於其沒有任何意義。

陣列的記憶體單元一般是連續的,乙個陣列的陣列名就是乙個指標變數。指標可以指向乙個陣列,也可以指向乙個陣列中的某個元素。

一維陣列定義後賦值給指標變數,可以用兩種方法來訪問陣列元素。

一種稱為下標法,即用「陣列名[i]」的形式訪問陣列元素

一種稱為指標法,即採用*(指標名+i)形式,用間接訪問的方法來訪問陣列元素

例如:

int a[5]=[1,2,3,4,5],*p;

p=a;

printf ("%d",a[1])//使用第一種方法

printf ("%d",*(p+1))//使用第二種方法

c語言允許把乙個二維陣列分解為多個一維陣列來處理。例如陣列a[3][4]可分解為三個一維陣列,即a[0],a[1],a[2]。

int a[3][4]=;

int(*p)[4];

p = a;

在上述的二位陣列賦值中,

對於陣列的引用: p+i指向一維陣列a[i]

對於陣列元素的引用: *(p+i)+j指向二維陣列i行j 列的元素的位址,*(*(p+i)+j)指向i行j列元素的值

for(i=0;i<3;i++)

for(j=0;j<4;j++) printf("%d ",*(*(p+i)+j));

對結構體的指標變數,賦值與普通賦值一樣,指標變數一般指向第乙個成員變數

struct mystr 

; struct mystr ms=;

struct mystr *p=&ms;

指標訪問結構體成員變數的方式有兩種:

第一種:使用指向運算子,p->a(一般都使用第一種)

第二種:使用.的方式,(*p).a

使用指標p訪問結構體三個變數的下述方法一般是不太正規的,因為成員變數a和b之間可能會有若干個填充位元組,在通過*p訪問到成員變數a時,*(p+1)不一定正好訪問到b,但是也有可能訪問到。

*p; //訪問成員a

*(p+1); //訪問成員b

*(p+2) //訪問成員c

在c語言中,乙個函式會占用一段連續的記憶體區,函式名是函式所佔記憶體區的首位址,把函式的首位址賦予乙個指標變數,該指標變數指向該函式,這種指標變數被稱為函式指標變數。

函式指標變數宣告方式:型別說明符 (*指標變數名)();

「型別說明符」指函式返回值的型別,「(* 指標變數名)」表示「*」後面的變數是定義的指標變數,空括號表示指標變數所指的是乙個函式。

例如:int (*p)();

int max(int a,int b)

main()

指標的總結

指標變數定義格式 變數型別 變數名 變數型別 將來可以儲存什麼型別的變數的位址 僅僅是乙個象徵 標誌 象徵著這是乙個指標變數 int p p number 指標的注意點 1.不能把常量賦值給乙個指標變數 2.定義指標變數的時候,寫的什麼型別,將來指標變數就只能指向 儲存 什麼型別的變數 位址 3.指...

c c 之指標的指標總結

指標變數p的值是001bfd18,而 號的作用是取值,p即取位址001bfd18中存放的值 其實p中存放的是位址,只是當cout時,如果指標是字元型指標,那麼會輸出p中位址指向的記憶體中的內容 這裡是h 直到遇到 0 才結束。所以直接輸出p時會輸出hello,而將p強制轉換為void 時輸出的是位址...

指標的運算總結

一 算術運算 1 指標與證書的加減運算 px n,px n 指標作為位址量加上或減去乙個整數n,其意義是指標當前指向位置的前方或後方第n個資料的位置。由於指標可以指向不同資料型別,即資料長度不同的資料,所以這種運算的結果取決於指標指向的資料型別。p n的實際操作是 p n sizeof 資料型別 p...