零基礎C語言入門021 陣列,陣列元素位址的規律

2021-10-03 23:44:31 字數 4082 閱讀 2606

陣列的含義

一言以蔽之,陣列就是儲存一批同型別資料的地方。

定義陣列

型別 陣列名[常量表示式]

int a[6]; // 定義乙個整型陣列,總共存放6個元素a[0],a[1],a[2],a[3],a[4],a[5]

char b[24]; // 定義乙個字元型陣列,總共存放24個元素

double c[3]; // 定義乙個雙精度浮點型陣列,總共存放3個元素

在定義陣列時,需要在陣列名後邊緊跟著一對方括號,其中用常量表示式來指定陣列中元素的個數。因為只有告訴編譯器元素的個數,編譯器才能申請對應大小的記憶體給它存放。

訪問陣列

陣列名[下標]

a[0]; // 訪問a陣列中的第乙個元素

b[1]; // 訪問b陣列中的第二個元素

c[5]; // 訪問c陣列中的第六個元素

// 注意:

int a[5]; // 建立乙個具有五個元素的陣列

a[0]; // 訪問第乙個元素的下標是0,不是1

a[5]; // 報錯,因為第五個元素的下標是a[4]

//陣列中方括號裡的下標從零開始計數,第1個資料為a[0],第10個數為a[9]

//a[10]表示第11個數,沒初始化,不確定,所以列印出隨機數。

#includeint main(void)

; printf("%d\n", (a[1] + a[7]) / a[2]);

printf("%d\n", a[1]);

printf("%d", a[10]);

system("pause");

return 0;

}

陣列的初始化

int a[10] = ; // 將陣列中所有元素初始化為0
b. 如果是賦予不同的值,那麼用逗號分隔開即可:

int a[10] = ;
c. 你還可以只給一部分元素賦值,未被賦值的元素自動初始化為 0:

int a[10] = ; // 表示為前邊 6 個元素賦值,後邊 4 個元素系統自動初始化為 0
d. 有時候還可以偷懶,可以只給出各個元素的值,而不指定陣列的長度(因為編譯器會根據值的個數自動判斷陣列的長度):

int a = ;
e. c99 增加了一種新特性——指定初始化的元素。這樣就可以只對陣列中的某些指定元素進行初始化賦值,而未被賦值的元素自動初始化為 0:

int a[10] = ; // 編譯的時候記得加上–std=c99選項
\n

\nint a[5]; // 建立乙個具有五個元素的陣列

a[0]; // 訪問第乙個元素的下標是0,不是1

a[5]; // 報錯,因為第五個元素的下標是a[4]

//宣告字串陣列時沒指定大小,會在末尾加\0表示結束

#include int main(void)

; printf("lenght=%d\n",sizeof(array));

char str="fangxu";

printf("lenght=%d\n",sizeof(str));/*占用空間為7位元組*/

system("pause");

return 0;

}

#include int main(void)

宣告字串陣列時指定大小,末尾就不加\0

#include int main(void)

; printf("lenght=%d\n",sizeof(array));

char str[6]="fangxu";

printf("lenght=%d\n",sizeof(str));占用空間為6位元組

system("pause");

return 0;

}

//輸入年份,分別列印這年每個月份的天數

//公曆閏年判定規律為:四年一閏、百年不閏、400年再閏。

#include int main(void)

; int i, year;

printf("請輸入乙個年份:");

scanf("%d", &year);

if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))/*優先順序&&大於||*/

for (i = 0; i < sizeof(days); i++)/*用sizeof表示陣列長度*/

system("pause");

return 0;

}

//輸入生日和今天的日期,計算你一共活了多少天

#include int main(void)

; printf("請輸入你的生日(如1988-05-20):");

scanf("%d-%d-%d", &year1, &month1, &day1);

printf("請輸入今年日期(如2016-03-28):");

scanf("%d-%d-%d", &year2, &month2, &day2);

while (year1 <= year2)

day1++;

count++;

}day1 = 1;

month1++;

}month1 = 1;

year1++;

}finish: printf("你在這個世界上總共生存了%d天\n", count);

system("pause");

return 0;

}

//可以用%d十進位制輸出陣列元素位址,方便檢視元素記憶體間距

#includeint main(void)

; printf("%d--%p\n",array[0],&array[0]);

printf("%d--%p\n",array[1],&array[1]);

printf("%d--%p\n",array[2],&array[2]);

printf("%d--%p\n",array[3],&array[3]);

printf("%d--%p\n",array[4],&array[4]);

printf("\n");

printf("%d--%d\n",array[0],&array[0]);

printf("%d--%d\n",array[1],&array[1]);

printf("%d--%d\n",array[2],&array[2]);

printf("%d--%d\n",array[3],&array[3]);

printf("%d--%d\n",array[4],&array[4]);

printf("\n");

printf("%d--%d\n",array[0],&array[0]);

//位址偏移,元素位址加1不是位址值加1,

//元素型別為int型就是加4,為double型就是加8

printf("%d--%d\n",array[1],&array[0]+1);

printf("%d--%d\n",array[2],&array[0]+2);

printf("%d--%d\n",array[3],&array[0]+3);

printf("%d--%d\n",array[4],&array[0]+4);

printf("\n");

printf("%d--%d\n",&array,&array+1);

//值相差20,正好為陣列array[5]長度。

c 陣列擷取 C語言零基礎入門 陣列 04

本節課的任務是 我們之前講解的一維陣列與二維陣列 都是基於儲存的內容是int型別的資料。我們說過 同乙個陣列中可以存放任意簡單型別的資料,比如 乙個陣列中可以存放的資料型別都是 int,float,double,char等等。char型別的陣列就被稱之為字元陣列,因為他的每乙個陣列索引位置存放的資料...

零基礎入門C 5 陣列

3 二維陣列 所謂陣列,就是乙個集合,裡面存放了相同型別的資料元素 特點1 陣列中的每個資料元素都是相同的資料型別 特點2 陣列是由連續的記憶體位置組成的 一維陣列定義的三種方式 資料型別 陣列名 陣列長度 資料型別 陣列名 陣列長度 資料型別 陣列名 示例 include using namesp...

C 零基礎到入門

1 c語言概述 2 編寫 執行乙個簡單的c語言程式 3 資料型別 4 運算子和表示式 如果你對c語言一竅不通,那你就好好看這篇文章,我會力爭讓你真正的做到從零基礎到入門,同時這篇文章會讓你基本認識什麼是c語言 當然你要是有基礎那就不用看這篇文章,include void main char u pr...