——- ios培训、ios培训、期待与您交流! ———-
数组的定义
数组是用来存数一组数据的容器,用于把同一类型的一组数据统一管理起来.
数组的使用方式
1.定义方式: 数据类型 数组名[长度(数量)] ;
int arr[3];
以上就是定义了一个长度为三的数组,里面最多可以存放3个int类型的数据;
2.初始化的方式(1):类型 数组名[(长度)]:={元素1,元素2,…}
int arr[3]={70,80,90};
以上是个创建的数组里面放了三个具体的数据.
初始化的方式(2)
int arr2[3];
// arr2={70,80,90};//错误
arr2[0]=70;
arr2[1]=80;
arr2[2]=90;
以上是先创建了一个数组,然后逐个往这个数组里面赋值,这里要注意:如果已经单独创建了一个数组而没有赋值的话,就不能给数组批量赋值了.
初始化的方式(3),省略长度
int arr3[]={70,80,90};
int arr[];//这样是错误的,在没有给数组赋值的情况下,数组长度不能省略.
这样初始化也可以,初始化结束之后这个数组的长度就是3了,之后给这个数组重新赋值的时候不能超过长度3.
3.取得数组中的某一个元素
表示方法:数组名[角标];
int a=arr[0];
以上就是把数组中的第0个位置的元素的值取出来赋值给 a;
数组的特点
1.数组必须要定义长度(正整数),定义时可初始化(长度必须是常量)或之后单独初始化.
2.数组是有序的.每个数据都有角标.从0开始分配.角标不能>=数组长度.类型一致.
3.数组有地址(数组名),里面的元素也有地址.数组当参数时(长度可省)传递的是地址.
int arr[]={1,2,3};
printf("%p---%p\n",arr,&arr[0]);
这个数组有地址,里面的元素也有地址,以上打印的结果是一样的,但是意义不同,arr代表整个数组,&arr[0]只是代表这个数组里面第一个元素的地址,二者只是地址相同而已.
4.数组当参数传递时是指针类型.所以如果需要用数组长度要额外传递.
int arrMy(int arr[],int size){
arr[0]=10;
for (int i=0; i<size; i++) {
printf("arr[%d]=%d\n",i,arr[i]);
}
return sizeof(arr);
}
以上代码实现的是把数组的第一个元素的值改为10.并且打印这个数组,可以看出数组当参数传递的时候传递的是一个指针,如果需要这个数组的长度还得重新传一个int 类型的参数.
数组的遍历方法
for (int i=0; i<length; i++) {
printf("arr[%d]=%d\n",i,arr[i]);
}
二维数组
二维数组本质上也是一个数组,只不过这个数组里面存储的每一个元素又是一个数组.
int arr[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
以上就是一个二维数组,他里面的元素都是数组.
字符串
定义:是一串字符,也是一个以’\0’结尾的字符数组.可以用来表示一串字符或文本数据.
字符串的用法
定义及初始化:
char arr[]=“abc”;
或char arr[4]={‘a’,’b’,’c’,’\0’} //当表示一个字符串的时候\0必须加,否则就不是字符串,只能是一个存储了char 类型字符的数组.
输出:printf(“%s\n”,s);
或printf(“%s\n”,&arr[0]);
赋值:strcpy(字符变量名,“字符串”);
//在使用strcpy的时候需要导入#include
char arr[]="heima";
char s[]="abc";//等效于:char s[]={'a','b','c','\0'};
//没有定义长度,则后面初始化几个元素,长度为几.
char s1[]={'a','b','c'};
char ss[]="haha";
char s3[3]="abc";//这个表示的是一个字符数组.因为长度不够,没法加'\0';
char s4[4]={'a','b','c'};
printf("s=%s,s1=%s,ss=%s,s4=%s\n",s,s1,ss,s4);
printf("%lu\n",sizeof s);
3.strlen函数用于计算一个字符串的长度(字符数量),使用必须引入
char s5[]="abc";
int a=strlen(s5);//a=3
int b=sizeof(s5);//b=4
char s6[]="你好he\0llo";//中文字符==3个英文字符.
int c=strlen(s6);//c=8
int d=sizeof(s6);//d=13