前言
今天是一天三更的尝试,这篇文章我们来了解一下【数组和字符串】
希望大家可以跟着我一起学习,一起加油!
三连即可提高学习效率0.0
🧑🏻作者简介:一个学嵌入式的年轻人
✨联系方式:2201891280(QQ)
📔源码地址:https://gitee.com/xingleigao/study_qianrushi
⏳全文大约阅读时间: 60min
文章目录
前言
一、数组
一维数组
二维数组
多维数组
二、字符数组和字符串
字符数组方法
三、字符串函数
字符串长度函数strlen
字符串连接函数strcat
字符串拷贝函数strcpy
字符串比较函数strcmp
一种错误
四、扩展字符串函数
写在最后
数组
构造数据类型之一
数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素
数组中各元素的数据类型要求相同,用数组名和下标确定。数组可以是一维的,也可以是多维的。
一、数组
一维数组
所谓一维数组是指只有一个下标的数组。它在计算机的内存中是连续存储的。
C语言中的声明方式为:
<存储类型> <数据类型 > <数组名>[<表达式>] ;
其实数组名就是一个指针,指向首地址的位置。
注意的点:
C语言对数组不作越界检查,使用时要注意int a[5]; a[5] = 10编译不报错
可以用变量定义数组维数int i = 15; int a[i]
数组必须先定义,后使用
只能逐个引用数组元素,不能一次引用整个数组
数组元素表示形式:数组名[下标] (本质上就是指针的解引用,可以结合指针来看)
初始化方式
1.static int a[5];等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4] = 0;
2.int a[5]={6,2,3};等价于:a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0;
3,int a[]={1,2,3,4,5,6};//编译系统根据初值个数确定数组维数
二维数组
定义方式:
数据类型 数组名[常量表达式][常量表达式];
第一个叫做行,第二个元素叫做列。所以元素个数=行数*列数
注意:声明时列数不能省略,行数可以,其实就是多维数组只能省略最前面的那个值。
二维数组在内存中是顺序存储的,原因:内存是一维的 二维数组:按行序优先
二维数组元素的初始化
分行初始化
按元素排列顺序初始化
举个例子:int[][3]={{1},{4,5}}
多维数组
具有两个或两个以上下标的数组称为多维数组。
其实本质上就是套娃,如果把二维数组看成一个整体,那么再连续声明多个二位数组,就是三维数组,然后可以再多,全部都是套娃0.0
二、字符数组和字符串
字符数组方法
字符数组是元素的数据类型为字符类型的数组
初始化方式:
逐个赋值
字符串常量
举个例子:
char s[6] = {'h','e','l','l','o'}; char s[6] ="hello"; char s[] = "hello";
上面三种方式赋值的都是完全相同的!所以可以使用字符串来赋值更方便一些,但是字符串会多需要一个存储单元(’\0’)**
二位数组的初始化
char fruit[][7] = {"Apple","Orange","Grape","Pear","Peach"};
和二位数组是很类似的。
三、字符串函数
字符串的处理函数主要再string.h中,所以用到相关函数需要引入头文件。
#include<string.h>
常见的字符串处理函数:
求字符串长度的函数strlen
字符串拷贝函数strcpy
字符串连接函数strcat
字符串比较函数strcmp
字符串长度函数strlen
strlen(字符数组)
功能: 计算字符串长度
返回值: 返回字符串实际长度,不包括‘\0’在内
\xhh表示十六进制数代表的符号
\ddd表示8进制的
例:对于以下字符串,strlen(s)的值为:
char s[10]={‘A’,‘\0’,‘B’,‘C’,‘\0’,‘D’}; char s[ ]=“\t\v\\\0will\n”; char s[ ]=“\x69\141\n”;
答案:1 3 3
字符串连接函数strcat
strcat(字符数组1,字符数组2)
功能: 把字符数组2连到字符数组1后面
返回值: 返回字符数组1的首地址
注意的点:
字符数组1必须足够大
连接前,两串均以‘\0’结束;连接后,串1的’\0’取消,将后串连同’\0’连接。
字符串拷贝函数strcpy
格式: strcpy(字符数组1,字符串2)
功能: 将字符串2,拷贝到字符数组1中去
返回值: 返回字符数组1的首地址
注意的点:
字符数组1必须足够大
拷贝时‘\0’一同拷贝
字符串比较函数strcmp
格式: strcmp(字符串1,字符串2)
功能: 比较两个字符串
比较规则: 对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
返回值: 返回int型整数
若字符串1< 字符串2, 返回负整数
若字符串1> 字符串2, 返回正整数
若字符串1== 字符串2, 返回零
一种错误
char dest[] = {'a', 'b', 'c'}; char src[N] = ".com.cn"; strcat(dest, src); puts(dest); puts(src);
结果是:
abc.com.cn.com.cn .com.cn.com.cn
原因是: dest并不是一个字符串,没有结束符,导致函数在执行的时候发生了不可预料的错误。
一定要注意字符串函数使用的前提是:所有变量是字符串!!!!
四、扩展字符串函数
字符串函数
字符函数