int a;
printf
("int %p %p\n"
,&a,
&a+1);
char c;
printf
("char %p %p\n"
,&c,
&c+1
);
前兩行**是定義整型變數a,並且列印a的位址和a的位址加1的值;後兩行**是定義字元變數c,並且列印c的位址和c的位址加1的置。下面是執行結果
每次執行的結果一定是不一樣,因為位址是計算機根據執行狀態分配的。但是a的位址和a的位址加1的值的差值是一定的。同理c的位址和c的位址加1的值的差值也是一定的。結果是十六進製制的,可能新手同學看著會比較難受,但是不難計算出int型別的差值是4位元組,char型別的差值是1位元組。
int a;
*&a =10;
printf
("%d\n"
,a);
int
*p;char
*p2;
int
*p;char
*p2;
int a;
char b;
p =&a;
//將整型變數的位址賦值給p,此時p指向a
p2 =
&b;//將字元型變數的位址賦值給p2,此時p2指向b
int a;
int*p =
&a;//給變數p賦值a的位址,這裡的*表示p的身份是指標變數
printf
("int %p %p\n"
,p, p+1)
;//分別列印變數p中存放的位址和p中位址加1後的值
char c;
char
*p2 =
&c;//給變數p2賦值c的位址,這裡的*表示p2的身份是指標變數
printf
("char %p %p\n"
,p2, p2+1)
;//分別列印變數p2中存放的位址和p2中位址加1後的值
這個結果並不陌生,指標變數的偏移運算就是位址的偏移運算。
int a;
int*p =
&a;//給指標變數p賦值a的位址,這裡的*說明p的身份是指標變數
*p =10;
//間接運算,這裡的*是間接運算子
printf
("%d\n"
,a);
結果輸出是10,和位址的間接運算一樣。
void
swap
(int
*a,int
*b)int
main
(void
)
輸出結果是m = 20 n = 10。swap函式的功能是將main函式中的m和n的值進行交換。如何做到的呢?main函式在呼叫swap的時候,swap函式的引數a指向了main函式中的變數m,引數b指向了main函式中的變數n。然後在swap函式中使用間接運算將引數a、b指向的變數值進行了交換。在swap函式中*a就表示main函式中的m,*b就表示main函式中的n。
int score1, score2, score3;
int scores[3]
;
int arr[10]
;printf
("arr's len is %d"
,sizeof
(arr)
);
針對在校大學生的C語言入門學習 函式
float sin float a 在這裡float a就是形參,下面 是呼叫這個函式 int main 在這裡30就是函式sin的實參。int main int i,j for i 0 i 5 1 i 對陣列arr1排序,氣泡排序法 for i 0 i 5 i 列印陣列arr1的排序結果 prin...
針對在校大學生的C語言入門學習 高階語法
ar 指標指向指標指向char。我的翻譯 ar 是乙個指向指標的指標,所指向的指標指向char型別。就是我們常說的二級指標。int daytab 13 daytab 指標指向13個int型別元素的陣列。我的翻譯 daytab是乙個指標,指向乙個13個元素的陣列,該陣列的元素型別是int。就是我們常說...
蓋茨留給在校大學生的十句警告
蓋茨留給在校大學生的十句警告 1 社會充滿不公平現象。你先不要想去改造它,只能先適應它。因為你管不了它 2 世界不會在意你的自尊,人們看的只是你的成就。在你沒有成就以前,切勿過分強調自尊。因為你越強調自尊,越對你不利 3 你只是中學畢業,通常不會成為ceo,直到你把ceo職位拿到手為止。4 當你陷入...