一、数组
- 概念:
数组:相同数据类型的集合(一块连续内存,有固定长度)--》桶--》大 --》小
一维数组
- 格式
数据类型 数组名[数组元素个数] = {值};
int arr[5] = {1,2,3,4,5};
数组名:定义与变量名定义方法一致
[n] :有[]才能说明是数组,它数组独有的 n:阿拉伯数字,表示数组元素个数
数组元素个数:arr[0] arr[1] arr[2] arr[3] arr[4] 使用时数组元素下标 = n-1
注意:
数组可以越界访问(读取数据),但是里面的值并非你所想要的值
数组越界千万不可更改里面的值(可能会造成程序出现段错误,程序退出)
数组越界初学者不要尝试使用
写法:
i
nt arr[5] = {1,2,3,4,5}; //定义有5个元素int类型数组,数组名arr; arr[0]=1; arr[1]=2;。。。arr[4]=5;
int arr[5]; //定义有5个元素int类型数组,数组名arr; 若数组为全局变量:arr[0]=0; arr[1]=0;。。。arr[4]=0;若为局部变量:数组未知
int arr[] = {4,5}; //定义有2个元素int类型数组,数组名arr; arr[0]=4; arr[1]=5;
int arr[]; //数组定义非法,系统无法获取数组大小
int arr[5] = {1,2}; //定义有5个元素int类型数组,数组名arr; arr[0]=1; arr[1]=2;arr[2]=0;arr[3]=0;arr[4]=0;
char ch[5]={'h','e','l','l','o'}; //定义有5个元素char类型数组,数组名ch; ch[0]='h'; ch[1]='e';。。。ch[4]='o';
char ch[5];//定义有5个元素char类型数组,数组名char; 若数组为全部变量:ch[0]='\0'; ch[1]=0;。。。ch[4]=0;若为局部变量:数组未知
char ch[5]={'h','e'};//定义有5个元素char类型数组,数组名char; 若数组为全部变量:ch[0]='h'; ch[1]='e',ch[2] = '\0',ch[3] = '\0',ch[4] = '\0'
char ch[6]="hello"; 用""来存储字符串,系统会在字符串后面加'\0'
char ch[6]="hello"; == > char ch[6]={'h','e','l','l','o','\0'};
- 字符型输入及输出方法如下
方法一:
char ch[5]="hell"--> ch[0] = 'h' , ch[1] = 'e';
for(i=0; i<5; i++)
{
scanf("%c",&ch[i]); //数组输入
}
for(i=0; i<5; i++)
{
printf("arr[%d] = %c",i,ch[i]); //数组输出
}
方法二:
char ch[5];
scanf("%s",ch); //数组输入字符串 ch就是数组地址
printf("ch= %s",ch); //数组输出
- sizeof与strlen区别
sizeof:计算数组大小
strlen:计算数组长度
区别
strlen:计算字符串长度,这个函数计算到'\0',则结束计算。
sizeof:计算数组所占内在大小,包括'\0'
例子
char buffer[]="helloworld";
先将字符串char buffer[]="helloworld";分解为字符:'h','e','l','l','o','w','o','r','l','d','\0'
sizeof(char) = 1
sizeof(buffer) = 11
strlen(buffer) = 10
--》short
short ch[5] = {88,89,41,20,0};
sizeof(short) = 2
sizeof(ch) = 10--》short:2个字节 * ch里面元素5 = 10
二维数组
- 概念:
二维数组:一维数组的数组;数组中的数组(一块连续内存,有固定长度)
- 写法:
数据存储类型 数组名[大数组元素个数][小数组元素个数] = {值}
解析:
数据存储类型:char short int ...double
数组名:与变量命名方式一致
大数组元素个数:阿拉伯数字
小数组元素个数:阿拉伯数字
值:根据数据类型写入值即可
写法参考:
写法一--》short ch[3][2]={{1,2},{3,4},{5,6}}; //定义了一个short类型的二维数组,大数组个数:3,小数组个数:2
//ch[0][0]=1,ch[0][1]=2,ch[1][0]=3,ch[1][1]=4,ch[2][0]=5,ch[2][1]=6,
short ch[3][2]={1,2,3,4,5,6}; //定义了一个short类型的二维数组,大数组个数:3,小数组个数:2
//ch[0][0]=1,ch[0][1]=2,ch[1][0]=3,ch[1][1]=4,ch[2][0]=5,ch[2][1]=6,
写法二
short ch[3][2]={1,2,3,4}; ==> short ch[3][2]={{1,2},{3,4},{0,0}};
short ch[3][2]={1,2,{0,4}}; ==> ch[3][2]={{1,2},{0,4},{0,0}};
short ch[3][2];//定义了一个short类型的二维数组,大数组个数:3,小数组个数:2 数组名ch;
若数组为全局变量:ch[0][0]=0; ch[0][1]=0;。。。ch[2][1]=0;
若为局部变量:数组未知
short ch[][]={1,2,3,4,5,6};==>short ch[3][2]={{1,2},{3,4},{5,6}}; //系统自动识别数组长度
- 错误写法:
int [][]={1,2,3,4,5,6}; //不合法,系统无法确定数组大小
int [3][]=={1,2,3,4,5,6}; //不合法,系统无法确定数组大小
例子:
假设:char ch[3][6]={"hello","hehe","abcd"};
sizeof(ch) = 18 //计算整个数组的大小
sizeof(ch[1]) = 6 //计算大数组[1]的大小
short ch[3][6]={{1,2,3,4,5,6},{6,34,6,76}};
sizeof(ch) = 36 //计算整个数组的大小
sizeof(ch[1]) = 12 //计算大数组[1]的大小
记住short存储一个数据占用两个字节。