1.
#include
int main(int argc, const char *argv)
;這是乙個指標陣列,裡面所有的元素都是指標,但這裡的指標是乙個位址常量,比如「aaaaa」本身就是乙個位址
直接使用%p,就可以列印出這一固定的位址值。
printf("%p %p\n","aaaaa","bbbbb");
printf("%p %p\n",cnames[0],cnames[1]);
或者,因為陣列裡面的變數就是指標,所以直接列印陣列裡的元素,就是列印出位址值。
int a[3]={};
printf("%p",a);在這裡,a本身就是乙個位址,不用再加&,可以得出陣列a的首位址
printf("%p\n",&a[0]);
return 0;
2.不只是陣列的變數名稱代表位址,函式的變數名稱也代表該函式的首位址,也就是函式的入口
#include
int sum(int i,int j)
int main(int argc, const char *argv)
;char a="abc";當使用字串給字元陣列賦值的時候,系統以單個字元的形式儲存起來,並且自動加入『/0』,跟一般的字元陣列做以區分。
char* p;
p=a;*(p+4)=?
既然是以單個字元的形式儲存起來,且指標以乙個位元組為單位移動,所以當指標移動四個單位時,指標指到\0的位置。
char* a=;
printf("%p",a);
printf("%p\n",&a[0]);
a作為字元陣列的首位址,可以直接用%p列印出來
也可以獲得a[0]的位址,列印出來
printf("%p",a[0]);
printf("%p\n","hello");
a[0]本身作為乙個位址常量,可以列印出來
而這個「hello"作為這個位址常量,也可以直接列印出,且兩者值相等。
char a=;
printf("%p",a);
printf("%s",a);
在列印字串的時候
char a="hello";
printf("%s",a);
a作為字串的首位址,直接列印出來的是字串。
而a作為字串的首位址,可以直接以%p的形式列印出來該字元陣列的首位址。
指標與指標位址
int urn size urn 0 100 urn 1 200 urn 2 300 urn 3 400 urn 4 500 int ptr1,ptr2,ptr3 ptr1 urn ptr2 urn 2 printf 當前指標的值和位址 printf ptr1 p,ptr1 d,ptr1 p n p...
指標與位址之位址與變數
一.int a 10 1 int 代表的是資料型別,其標識的資料儲存為整形型別,預設帶有乙個unsigned 代表在記憶體當中申請 4位元組空間 2 a 是乙個對映符號 用於標記儲存該記憶體的資料位址,其在變數表中定義 a 0x7fffacd23bae 4 int b 0x7fffacd23bae ...
C 指標與位址
指標是一種儲存變數位址的變數,存放在一組連續的儲存單元中 通常是2或4個,後者居多 因為c語言本身的feature就很少,加上指標又非常的高效,指標已然成了c最大的特點。與指標相關的操作符有兩個,分別為 解引用 和 取位址 解引用這個詞比較令人費解,比方存在指標p,p c p中便儲存了 c 的位址,...