int a=
;int
*p = a;
#include
intmain()
;int
*p = a;
printf
("p = %p\n"
,p);
printf
("p+1 = %p\n"
,p+1);
printf
("*p = %d\n"
,*p)
;//*p <==> a[0]
printf
("*(p+1) = %d",*
(p+1))
;//*(p+1) <==> a[1]
return0;
}
輸出:
p = 000000000062fe00
p+1 = 000000000062fe04
*p = 1
*(p+1) = 2
如果指標不是指向像陣列這樣的連續空間,則p+1運算沒有意義。 推論
指標除了可以做加乙個整數,還可以:
#include
intmain()
;int
*p =
&a[0];
int*p1 =
&a[4];
printf
("p = %p\n"
,p);
printf
("p1 = %p\n"
,p1)
;printf
("p1-p = %d"
,p1-p)
;return0;
}
輸出:
p = 000000000062fdf0
p1 = 000000000062fe00
p1-p = 4
兩個指標還可以做比較:
*p++可以分解為兩行**:
*p;
p++;
++運算子優先順序高於*,要先做p++,而p++的運算結果是+1之前的。所以整句**的意思是先取初p指標所指的值,然後p再移到下乙個位置。 C語言 指標運算
p a 將變數位址賦值給指標 p array 將陣列位址賦值給指標 p array i 將陣列元素賦值給指標 p1 p2 將指標位址賦值給指標 include 引用函式庫 void main f0889414 f0889414 f0889414 10 10 10 p 1 和 p 意義不相同,前者沒有...
指標運算 c語言
指標運算 加法 每一次加1 就是所指向的首位址加乙個sizeof 型別 int a 10 int p a p i a 0 i 減法同上 但是同樣要注意範圍的情況 值得注意的是 也有兩個指標做減法 但是兩個指標相減的意思是位址的差值 sizeof 型別 的優先順序很高 但是沒 高 p 常用於陣列的的連...
C語言指標 指標的運算
include int main void 執行這段 會出現錯誤嗎?如果出現錯誤,是什麼錯誤?分析 printf一種常規的用法就是printf please input a data 這種用法相信很多人都使用過,但是將這種用法分析一下,這樣的用法printf函式接收到的引數是乙個常量字串的首位址,然...