陣列的含義
一言以蔽之,陣列就是儲存一批同型別資料的地方。
定義陣列
型別 陣列名[常量表示式]
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...