1. 數組的標志是 []:
#include <stdio.h>
int main(void)
{
int nums[3];
nums[0] = 11;
nums[1] = 22;
nums[2] = 33;
printf("%d,%d,%d",nums[0],nums[1],nums[2]);
getchar();
return 0;
}
2. 數組的大小和維數:
#include <stdio.h>
int main(void)
{
int nums[10];
printf("數組大小是: %d\n",sizeof(nums));
printf("數組維數是: %d\n",sizeof(nums)/sizeof(nums[0]));
getchar();
return 0;
}
3. 遍歷數組:
#include <stdio.h>
int main(void)
{
int nums[10];
int i;
for (i = 0; i < sizeof(nums)/sizeof(nums[0]); i++)
nums[i] = i * i;
for (i = 0; i < sizeof(nums)/sizeof(nums[0]); i++)
printf("%d\n",nums[i]);
getchar();
return 0;
}
對字符串數組,我們也可以這樣想...
#include <stdio.h>
int main(void)
{
char cs[] = "ABCDEFG";
int i;
for (i = 0; cs[i]; i++) { /* cs[i] 為假時,就到了那個空字符了 */
printf("%c\n",cs[i]);
}
getchar();
return 0;
}
4. 對一維數組,可以不指定維數,它能自動識別:
#include <stdio.h>
int main(void)
{
double ds[] = {1.1,2.2,3.3,4.4};
int count = sizeof ds / sizeof ds[0];
int i;
for (i = 0; i < count; i++) {
printf("%.1f\n",ds[i]);
}
getchar();
return 0;
}
4. 不指定維數的數組常常會用於字符串:
#include <stdio.h>
int main(void)
{
char str1[] = "Builder";
/* 假如不怕麻煩可以這樣初始化 */
char str2[8] = {'B','u','i','l','d','e','r','\0'};
unsigned i;
for (i = 0; i < sizeof str1/sizeof str1[0]; i++) {
printf("%c",str1[i]);
}
printf("\n%s",str1);
printf("\n%s",str2);
getchar();
return 0;
}
5. 二維數組:
#include <stdio.h>
int main(void)
{
int nums[3][4] = {
{11,12,13,14},
{21,22,23,24},
{31,32,33,34}
};
printf("%d,%d,%d\n",nums[0][2],nums[1][2],nums[2][2]);
getchar();
return 0;
}
5. 可以並只能省略第一個維數:
#include <stdio.h>
int main(void)
{
int nums[][4] = {
{11,12,13,14},
{21,22,23,24},
{31,32,33,34}
};
printf("%d,%d,%d\n",nums[0][2],nums[1][2],nums[2][2]);
getchar();
return 0;
}
6. 多維數組:
#include <stdio.h>
int main(void)
{
int nums[2][3][4] = {
{
{111,112,113,114},
{121,122,123,124},
{131,132,133,134}
},
{
{211,212,213,214},
{221,222,223,224},
{231,232,233,234}
}
};
printf("%d,%d,%d\n",nums[0][0][0],nums[1][1][1],nums[1][2][2]);
getchar();
return 0;
}
7. 多維數組也是可以並只能省略第一個維數:
#include <stdio.h>
int main(void)
{
int nums[][3][4] = {
{
{111,112,113,114},
{121,122,123,124},
{131,132,133,134}
},
{
{211,212,213,214},
{221,222,223,224},
{231,232,233,234}
}
};
printf("%d,%d,%d\n",nums[0][0][0],nums[1][1][1],nums[1][2][2]);
getchar();
return 0;
}
8. 字符串數組:
#include <stdio.h>
int main(void)
{
char css[][10] = {
"AAA",
"BBB",
"CCCCCCC"
};
size_t i;
for (i = 0; i < sizeof(css)/sizeof(css[0]); i++) {
printf("%s\n",css[i]);
}
getchar();
return 0;
}
9. 沒有初始化的局部數組變量,包含的是一堆垃圾值:
#include <stdio.h>
int ns1[10]; /* 這個會初始化為空 */
int main(void)
{
int ns2[10]; /* 這個不會初始化 */
int i;
for (i = 0; i < sizeof(ns1)/sizeof(ns1[0]); i++)
printf("%d\n",ns1[i]);
printf("------------\n");
for (i = 0; i < sizeof(ns2)/sizeof(ns2[0]); i++)
printf("%d\n",ns2[i]);
getchar();
return 0;
}
10. 初始化數組為空其實很簡單:
#include <stdio.h>
int main(void)
{
int ns1[10] = {NULL}; /* 或 {0} */
int ns2[2][3][4] = {0};
int i;
for (i = 0; i < sizeof(ns1)/sizeof(ns1[0]); i++)
printf("%d\n",ns1[i]);
printf("---------\n");
printf("%d\n",ns2[1][2][3]);
getchar();
return 0;
}
返回“學點C語言 - 目錄”