黑马程序员-C语言-数组与字符串

——- 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值