一 :取位址運算「&」與取內容運算「*」:
單目運算「&」是取操作物件的位址 , 「*」是取指標指向的物件的內容 , 兩者互為逆運算
int x , *p ;p = &x ;
&(*p) = p 表示指標 ; *(&x)= x 表示變數x
二:指標的算術運算 :
指標的運算與其基型別有關 , 一般的,如果p是乙個指標 ,n是乙個正整數 ,則對指標 p 進行 +(-)操作後的實際位址是 :
p +(-)n*sizeof(基型別)
char *p ;int *q ;
float *tk ;
p += 1 ; // p = p + 1 = 2111h
q += 4 ; // q = q + 4*4 = 2239h
tk -= 3 ; // tk = tk -3*8 = 246ch
三 : 指標自加 ,自減運算 :
指標的自加 ,自減運算也是位址運算
m = * p ++ 等價於 m = *(p ++)
取指標 p 當前所指變數的值賦給變數 m ; p 做加 1 運算 , 指向下乙個目標變數 .
m = * ++ p 等價於 m = * ( ++ p)
p 做加 1 運算 , 指向下乙個目標變數 ; 取指標 p 當前所指變數的值賦給變數 m .
m = (*p)++ 與 m = ++(*p)
前者是將指標 p 所指的變數的值賦給變數 m , 然後變數 *p 自加 1 ;
後者是將指標 p 所指的變數 *p 的值自加 1 後賦給變數 m .
四 :指標間的減法運算 :
指向同一組型別相同資料的指標之間可以進行減法運算 , 相減的結果表示兩指標間相距的資料的個數 .
五 :指標的關係運算 :
p , q 指向同乙個陣列 , p > q 表示p 是否指向 q 所指位置的後面 , 若成立 則 表示式的值為非 0 , 否則為 0 .
六 :指標的下標運算 :
p[i] = *(p + i) ;
來自
C語言指標 指標的運算
include int main void 執行這段 會出現錯誤嗎?如果出現錯誤,是什麼錯誤?分析 printf一種常規的用法就是printf please input a data 這種用法相信很多人都使用過,但是將這種用法分析一下,這樣的用法printf函式接收到的引數是乙個常量字串的首位址,然...
C語言指標的運算
指標的運算實質是位址的運算。c語言有一套適用於指標 陣列等位址運算的規則,正是這套規則賦予了c語言出色的處理能力。對於指標指向變數,能進行基型別資料所能進行的全部運算。1 引用運算 1 取位址運算 取位址運算 我們已非常熟悉。對指標變數進行取位址運算,可以得到指標變數本身的位址。2 取內容運算 取內...
C語言指標的運算
指標的算術運算 指標可以加上或減去乙個整數。指標的這種運算的意義和通常的數值的加減運算的意義是不一樣的 以單元為單位。例如 例二 char a 20 int ptr int a 強制型別轉換並不會改變 a 的型別 ptr 在上例中,指標 ptr 的型別是 int 它指向的型別是 int,它被初始化為...