一、数组
1.概念:批量定义若干个类型相同的元素;
2.特点:①定义若干个类型相同的元素;
②数组的元素地址空间连续;
③数组名是数组的首元素地址,也是整个数组的首地址;
3.定义: 数据类型 +变量名[元素个数];
数据类型:元素的数据类型;
变量名:符合标识符命名规则即可;
变量的类型:去掉变量名,剩下的所有就是该变量的数据类型
eg:int a; a:int
double b; b:double
int num[10]; num: int[10]
整个数组的数据类型:数据类型+[元素个数];
整个数组的大小=元素的数据类型大小 * 元素个数;
=sizeof(数据类型[元素个数]);
=sizeof(变量名);
元素个数=整个数组的大小/元素的大小;
eg: int num[10]; //定义10个int类型的元素 整形数组;
元素的数据类型:int;
整个数组的数据类型(num的数据类型):int[10]
整个数组的大小(num的大小):4*10=40;
char buf[32]; 字符型数组
元素的数据类型(buf[32]):char
整个数组的数据类型(buf的数据类型):char [32]
整个数组的大小:1*32=32;
sizeof(char[32]) ==32
sizeof(buf) : 32
double num[6]; 浮点型数组
元素的数据类型:double
整个数组的数据类型(num的数据类型):double [6]
整个数组的大小:6*8=48;
sizeof(double[6]) ==48
sizeof(num) :48
4.使用:
(1)取元素:
格式:变量名[下标]
下标:距离首元素的偏移量;
下标的范围:0到数组的元素个数-1;
(2)数组的初始化(定义+赋值):
①完全初始化,依次赋值
int num[6] = {1,2,3,4,5,6};
② 部分初始化,依次赋值,剩下的默认赋值为0;
int num[6] = {11,22};
③省略数组元素个数的初始化:一定是完全初始化。
int num[] = {11,12,6,8,9,1,3,5,6,7,8};
元素个数=数组大小/元素大小;
即元素个数=sizeof(num)/sizeof(num[0]);
④数组的输入输出:
⑤只定义,不赋值:遵循全局变量和局部变量自身的原则。
5.数组的应用——冒泡排序——从大到小
eg:int num[6] = {2,8,6,3,1,7};
6.字符型数组定义和使用:
char buf[32];//字符型数组
数组名:buf
buf的数据类型:char[32];
buf[0]的数据类型,即元素的数据类型:char
sizeof(buf)=32字节
sizeof(buf[0])=1字节
①用字符串初始化字符型数组:
字符串: "hello"——'h','e','l','l','o'
char buf[32]={"hello"};
buf[0]='h' , buf[1]='e', buf[2]='l',buf[3]='l',buf[4]='o' ,buf[5]='\0',buf[6]-----buf[31]=0
②从键盘输入:
%s——字符串的格式控制符;
char buf[32]={0};
scanf("%s",buf);//%s后面对应的输入列表是数组名(数组名是一个地址),%s表示从键盘接收一个字符串,空格和回车表示输入的完成。
注:scanf和%s结合,不能接收空格,因为%s遇到'\0'和回车停止打印;
引入新的函数gets
格式:gets(数组名);//数组名必须对应字符型数组;
功能:从键盘接受一个字符串,仅仅遇到回车表示获取完成;
注:有时编译后系统会有警告提醒,正常运行即可。使用gets()函数时,数组空间要充裕。
今天的学习就到这里啦,有什么不理解的或者想要讨论的欢迎大家在评论区留言~
长路漫漫亦灿灿,我们终会成为更优秀的人!加油!