針對在校大學生的C語言入門學習 指標和陣列

2021-10-14 07:54:21 字數 1990 閱讀 2052

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 當你陷入...