特点:可定义个同类型的数据
缺点:数据类型单一,静态数据长度固定
描述:以定义、声明、初始化、调用四个方式来进行说明
一维数组:
void test01() {
int i, j;
// 一维数组定义:类型符 数组名 [常量表达式];
int a[10] = {0,1,2,3,4,5,6,7,8,9}; // 定义+赋值(1、全部赋值)
int a1[10] = {0,1,2,3,4}; // 定义+赋值(2、部分赋值)
int a2[] = {0,1,2,3,4,5,6,7,8,9}; // 定义+赋值(3、不指定长度赋值)
int a3[10] = {0}; // 定义+赋值(4、0赋值)
int a4[10]; // 5、先定义后赋值
for(i=0; i<10; i++) a4[i] = i;
printf("一维数组定义+赋值\n");
for(i=0; i<10; i++) printf("%3d,%3d,%3d,%3d,%3d\n",a[i],a1[i],a2[i],a3[i],a4[i]);
}
二维数组:
void test02() {
int i, j;
// 二维数组定义:类型符 数组名 [常量表达式1][常量表达式2];
int b[2][2] = {{0,1},{2,3}}; // 定义+赋值(1、全部赋值)
int b11[2][2] = {0,1,2,3}; // 定义+赋值(1.1、全部赋值)
int b2[2][2] = {0,1}; // 定义+赋值(2、部分赋值)
int b22[2][2] = {{0},{1}}; // 定义+赋值(2.2、部分赋值)
int b3[][2] = {0,1,2,3}; // 定义+赋值(3、不指定长度赋值)
int b4[2][2] = {0}; // 定义+赋值(4、0赋值)
printf("二维数组定义+赋值\n");
for(i=0; i<2; i++)
for(j=0; j<2; j++)
printf("%3d,%3d,%3d,%3d,%3d,%3d\n",b[i][j], b11[i][j], b2[i][j], b22[i][j], b3[i][j], b4[i][j]);
}
字符数组:
void test03() {
int i;
// 字符数组定义+初始化:和一维+二维数组定义+初始化相同
char c1[5] = {'c','h','a','r','\0'}; // 定义+赋值(1、全部赋值)
char c11[4] = {'c','h','a','r'}; // 定义+赋值(1.1、全部赋值)(长度为4*4)
char c2[4] = {'c','h'}; // 定义+赋值(2、部分赋值)
char c3[] = "char"; // 定义+赋值(3、不指定长度赋值)
char c4[4] = {'c'}; // 定义+赋值(4、0赋值)
// 字符数组输入+输出
char d1[50];
char d2[40];
printf("字符数组1,字符数组2\n");
scanf("%s",&d1); // 输入1、scanf()
gets(d2); // 输入2、gets()
printf("字符数组1为%s:\n",d1); // 输出1、printf()
printf("字符数组2为: "); // 输出2、puts()
puts(d2);
//字符串处理
printf("字符串%s的长度为%d\n",d1,strlen(d1)); // 1、strlen(d1):d1的长度
printf("比较:%d\n",strcmp(d1,d2)); // 2、strcmp(d1,d2): d1>d2正;
printf("定长复制:%s中的前%d个字符复制到%s为%s\n",d2,2,d1,strncpy(d1,d2,2)); // 3、strncpy(d1,d2,2): d2中前2复制到d1
printf("复制:%s复制到%s为%s\n",d2,d1,strcpy(d1,d2)); // 4、strcpy(d1,d2): d1=d2;
printf("连接:%s\n",strcat(d1,d2)); // 5、strcat(d1,d2):d1=d1+d2;
printf("%s,%s\n",d1,d2);
}
三类数组汇总有:全部赋值、部分赋值、不定长度赋值、0赋值、先定义后赋值5种方式。