C語言指標的運算

2021-06-02 01:55:05 字數 1199 閱讀 7961

指標的運算實質是位址的運算。c語言有一套適用於指標、陣列等位址運算的規則,正是這套規則賦予了c語言出色的處理能力。 

對於指標指向變數,能進行基型別資料所能進行的全部運算。

1.引用運算

1)取位址運算(&) 

取位址運算「&」,我們已非常熟悉。對指標變數進行取位址運算,可以得到指標變數本身的位址。 

2)取內容運算(*) 

取內容運算「*」,前稱指標運算,用於獲取位址資料對應儲存單元的內容。取內容運算的優先順序與取位址運算優先順序相同,也為第2級,結合性亦為右結合。對指標變數,進行取內容運算可以得到指標變數所指向的資料。

取內容運算與取位址運算實質上是一對互逆運算。例如:

int a, p=&a; 

*(&a)就是a,&(*p)就是p;p指向a,*p與a等價。

2.算術運算

指標變數可以進行有限的算術運算。

1)加減運算

指標變數「加上」或「減去」乙個整數n,相當於指標變數加上或減去n個指標所指向資料的儲存單位,即指標由當前指向位置向後或向前移動n個指標所指向資料的儲存單位。

加減運算常用於陣列的處理。對指向一般資料的指標,加減運算無實際意義。例如;

int a[10],*p=a,*x;

x=p+3;/*實際上是p加上3*2個位元組賦給x,x指向陣列的第三個分量*/

對於不同基型別的指標,指標變數「加上」或「減去」乙個整數n所移動的位元組數是不同的。例如:

float a[10],*p=a,*x;

p=p+3;/*實際上是p加上3*4個位元組賦給x,x依然指向陣列的第三個分量*/

2)自增自減運算

指標變數自增、自減運算具有上述運算的特點,但有前置後置、先用後用的考慮,務請小心。例如:

int a[10],*p=a,*x;

x=p++;/*x指向陣列的第乙個分量,p指向陣列的第二個分量*/

x=++p;/*x、p均指向陣列的第二個分量*/

*p++相當於*(p++)。*(p++)與(*p)++含義不同,前者表示位址自增,後者表示當前所指向的資料自增。

3)指標相減

指標相減得到兩指標之間資料的個數,一般用於陣列處理。

3.關係運算

兩指標的關係運算表示兩指標的先後位置關係,一般用於陣列處理。除空指標外,不

能進行指標與一般數值的關係運算。

C語言指標 指標的運算

include int main void 執行這段 會出現錯誤嗎?如果出現錯誤,是什麼錯誤?分析 printf一種常規的用法就是printf please input a data 這種用法相信很多人都使用過,但是將這種用法分析一下,這樣的用法printf函式接收到的引數是乙個常量字串的首位址,然...

C語言指標的運算

指標的算術運算 指標可以加上或減去乙個整數。指標的這種運算的意義和通常的數值的加減運算的意義是不一樣的 以單元為單位。例如 例二 char a 20 int ptr int a 強制型別轉換並不會改變 a 的型別 ptr 在上例中,指標 ptr 的型別是 int 它指向的型別是 int,它被初始化為...

C語言 指標的運算

一 取位址運算 與取內容運算 單目運算 是取操作物件的位址 是取指標指向的物件的內容 兩者互為逆運算 int x p p x p p 表示指標 x x 表示變數x 二 指標的算術運算 指標的運算與其基型別有關 一般的,如果p是乙個指標 n是乙個正整數 則對指標 p 進行 操作後的實際位址是 p n ...