第六天 数组
一.数组
1.是什么? 用来存放一组数据的容器
2.有什么用? 用于把同一类型的一组数据管理起来
3.怎么用? 定义:数据类型 数组名[长度(数量)]
初始化:类型 数据名[长度] = {1,2,3} 赋值:数组名[角标] = 值
使用:数组名[角标],如int a = arr[1];
4.什么时候用? 当需要管理一组有关联的数据时
5.特点? 1)数组必须要定义长度(正整数),定义时初始化长度必须是常量或之后单独初始化; int arr[3] = {1,2};
arr[2] = 3;
int arr1[] = {1,2};
arr1[2] = 3;//不正确,越界了
int arr2[];//不正确,因为长度不确定
2)数组是有序的,从角标0开始,角标<数组长度,类型一致; 3)数组有地址(数组名)里面的元素也有地址,数组当参数时(长度可省)传递的是地址 int a[5];
printf("%lu\n",sizeof a/sizeof(int));//20/4 = 5
4)数组当参数传递时是指针类型,所以如果需要数组长度的话,需要额外传递; //数组下标不合法时有时候编译器不会报错,但是要避免下标越界; //完全不初始化时,元素为垃圾数;部分初始化时,为0或者'0'
5)内存分配:从高位取址
file:///var/folders/t0/rmtcrw9j6wq924w545wht0dm0000gn/T/WizNote/0a30a80c-6838-4116-9199-ea962380536a.png
从值的角度讲:数组名 = 数组首地址的地址 = 数组名取地址
二.二维数组
1.是什么? 用来存储一组数据的容器
2.有什么用? 用于把同一类型的一组数据管理起来
3.怎么用? 定义:类型 数组名[数组的数量][子数组长度] 初始化:类型 数组名[数组数量][子数组长度] = {{},{},{}}; 赋值:数组名[][] = 值 使用:例如int a = arr[0][1];
4.什么时候用?
5.特点? 1)与一维基本一样,但传递子数组时传递的是地址 2)数组数量:行数 长度:列数 3)每个子数组类型和长度一样
三.字符串 1.是什么? 是一串字符,也是一个以'\0'结尾的字符数组
2.有什么用? 用于表示一串字符或者文本数据
3.怎么用? 定义及初始化: char attr[] = {'a','b','c','\0'}; char attr1[] = "abc"; 输出: printf("%s\n",s); printf("%s\n",&attr[0]); 赋值: strcpy(字符串变量名,"字符串");//include<string.h> //字符串不能批量修改 strcpy(attr,"123");//把attr的内容改为123
4.什么时候用?
5.特点? 1)后面必须有'\0'结尾,否则只算普通的字符数组,但'\0'不会输出,只表示字符串结束 2)字符串输出占位%s必须遇到'\0'才能结束,否则会继续输出更高位地址值的字符 3)strlen函数用于计算一个字符串的长度(字符数量),使用必须引用<string.h> 4)strlen不会计算'\0',且碰到\0结束,sizeof不会受\0影厂,且长度包含'\0' 5)字符串一定是字符数组(且以'\0’结尾),但字符数组不一定是字符串
|