十、C语言的构造类型—数组

1、定义方式:类型 数组名[常量表达式][常量表达式]

2、实质:二维数组相当于一个n×m的表格,其中n为行数,m为列数

3、内存中的存放方法:按行存放,即在内存中先顺序存放第一行元素,然后存放第二行元素……

4、初始化方法:

    ①按照每行使用一个花括号来分行给二维数组赋初值;

如:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},即类似于获得如下3×4的表格:

1

2

3

4

5

6

7

8

9

10

11

12

②可以将所有数据写在一个花括号内,则按顺序对数组的各个元素进行赋初值;

如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},即类似于获得如下3×4的表格:

1

2

3

4

5

6

7

8

9

10

11

12

③可以对部分元素赋初值,则其它元素使用默认值自动填充;

④如果对数组中的所有元素都已赋初值,则定义数组时可以不指明第一维的长度,但第二维的长度不能省略。

如:inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12}

三、字符数组

1、定义方式:char 数组名[常量表达式]

2、说明:

①定义字符数组时不进行初始化,则其中各个元素的值是不可预料的;

②用于初始化数组元素的值如果大于数组的长度,则按语法错误处理,如果小于数组的长度,则未赋初值的

元素自动定为空字符。

四、字符串

1、C语言中,将字符串作为字符数组来处理。

2、C语言规定以字符\0作为字符

串结束的标志。

3、如果指明了字符数组的长度,则作为字符串使用时,该长度至少要比实际长度大1。

如:char  msg[5]=”China”;是不正确的,因为需要在末尾加入\0字符;因此,应当定义为char msg[6]。

4、\0是作为字符串结束的辨别标志,如果未显示添加,则由系统自动添加;

5、程序运行时以遇到的第一个\0作为结束标志,后面如果还有字符则直接忽略,使用scanf输入时,空格即为\0,如果显示使用\0反而被看着是两个字符,但如果确实需要这样用的话,可以在输入时加单引号,即:输入’\0’。

   如下面的代码:

#include  <stdio.h>

int  main()

{

    char a[10];

    scanf("%s",a);

    if(a[5]=='\0')

    {

printf("这里是结束字符\n");

    }

    if(a[4]=='o')

    {

        a[4]='\0';

    }

    printf("%s",a);

}

图片

由于第6个字符是空格,因此,a[5]==’\0’的条件成立,输出“这里是结束字符”;后面由于a[4]=’o’的条件也成立,因此将该字符替换成了\0字符,则后续字符不再输出。

6、字符数组的输入输出

①逐个字符输入、输出,用格式符%c;

②将整个字符串一次输入、输出,用格式符%s。

这种输入、输出的缺点在于,当输入中出现空格时,系统认为用户已经输入完毕,因此,空格后面的重要信息将被舍弃。

针对这个问题,我们可以借助字符处理函数gets()和puts()来解决。

7、字符串处理函数

   ①gets(字符数组):输入一个字符串到字符数组,字符串中出现的空格按’’输入,而不是’\0’;

   ②puts(字符数组):将一个字符串输出到终端;字符串中出现的空格按’’输出,而不是’\0’;

   ③strcat(字符数组1,字符数组2):连接两个字符串,结果放在字符数组1中;

   ④strcpy(字符数组1,字符数组2):将字符数组2复制到字符数组1中;

   ⑤strcmp(字符数组1,字符数组2):比较字符串1和字符串2;

   ⑥strlen(字符数组):测试字符串的实际长度,即不包括\0字符;

   ⑦strlwr(字符串):将字符串中的大写字母换成小写字母;

   ⑧strupr(字符串):将字符串中的小写字母换成大写字母。

关注微信公众号「工控编程与应用」,在手机上阅读所有教程,随时随地都能学习。本公众号每日更新,坚持原创,凡事有态度。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值