四、一维数组与字符数组(常用)
目的: 1. 一维数组的原理和使用方法
2.字符数组的使用
3.str等系列函数的使用
整型 4个字节 浮点型 4个字节 char类型 1个字节
4.1 一维数组的原理和使用
数组:通过一个符号访问多个元素
特点:①数据类型相同★
②保存原始数据
内存:内存所占字节数就是数组元素 x 数组类型所占字节
(编译时)定义数组的时候,其空间大小就已经确定
【注】在内存中先定义的变量占据高地址。
初始化:严格遵守格式,例:int a【5】= {1,2,3,4,5};
格式:相同数据类型不用重复书写,例如十个0,写一个就可以
数据类型 数据名 【 元素个数】;
4.2 字符数组的使用
存储字符串并对其进行处理
【注】字符数组的数组名存的就是数组的起始地址,类型是字符指针 &c[0] == c
4.2.1 %s 对应后面写的是字符数组名或者字符串常量
【错误案例】char c[5] = {'h','e','l,','l','o'};
输出字符串时会发生错误,hello后面会有乱码,因为C语言的字符串结束标志是‘\0',所以字符数组存储的字符串长度应该比字符数组少1,或者直接用 char c = [2] = "he";,会自动添加结束符
4.2.2 scanf 读取字符串
scanf读取字符串之后就会自动添加结束符
【注】scanf读取字符串如果出现空格就不会往下读,就会匹配结束,无法将带空格的字符串存储到一个字符数组中 解决==> gets
4.3 字符数组的初始化与传递(把一个变量的含义传递给对应的子函数)
4.4 gets 和 puts 函数
格式:char gets(char *str);
原理:除了'\n'以外的所有字符全部读取
用处:读取或者输出一行字符串;
参数的值传递:c是字符数组,但是编译器给c传递了一个值,c里面存储的类型时字符指针
4.5 str系列字符串操作函数(机试比较重要)
strlen:
strcpy:右边可以是字符常量,把右边的复制到左边
strcmp:比较大小,按照ASCII码比较
strcat:拼接,注意第一个数组要能够容纳拼接后的数组
如下图: