在c語言中,」」運算子最常用是在對陣列的處理上用到的,卻並不限於陣列處理,其實質上與組合語言中定址時使用的該操作符相似。對於乙個指標p,p[1]
或者1[p]
的結果是等價於*(p+1)
的。
對於指標,加法操作並非是單純的加上去即可,運算過程會由位址存放資料的型別影響。如以下兩段**最後輸出的p+1的值是不同的:
int *p;
p=0;
printf("%x",p+1);
long *p;
p=0;
printf("%x",p+1);
很明顯,
type *p=0;
p=p+1;
其實相當於
type *p=0;
p=(type*)((int)p+sizeof(type)*1);//(int)p是把位址作為純數值處理,型別轉換需根據環境而定
C語言 運算子與 運算子
我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...
C語言算術運算子與位運算子
1.算術操作符 前兩個不用多說,即是乘號,是求餘 取模 運算,注意 兩側運算元需均為整數 若除數與被除數符號不同,則結果符號與被除數保持一致。如 14 3 2 14 3 2 是求商運算,注意 若 的除數與被除數均為整數將執行舍位 即捨去小數中任何部分 如14 3 4 若除數與被除數符號不同,則結果符...
成員運算子 與指標運算子 的區別
在間接引用的時候,例如指標 p 就用p member如果是直接引用或者類本身或者內部引用就用.比如classa.member 或classtype copyconstructor classtype classa 要確定是用 還是用 必須先確定它前面的是乙個物件還是乙個物件指標。a a,p p a ...