嵌入式(Linux)系列文章目录
第一章 C语言の第一节 必备Linux命令和C语言基础
第一章 C语言の第二节 数据类型、常量、变量及运算符
第一章 C语言の第三节 输入输出专题
第一章 C语言の第四节 控制语句
第一章 C语言の第五节 数组和字符串
文章目录
前言
本文章采用VMware Workstation Pro进行嵌入式(Linux)系列学习
从零开始,重新学习(嵌入式相关内容)并记录知识点(涉及基础c语言(数据结构)、linux编程、shell脚本、文件io、网络编程)等),同时也是为了方便自身回顾,如有不对的地方请大佬多多指教,谢谢!->欢迎评论区留言
第一章 C语言
第五节 数组和字符串
1.一维数组
1.1 数组概念
- 构造数据类型之一
- 数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素
- 数组中各元素的数据类型要求相同,用数组名和下标确定。数组可以是一维的,也可以是多维的
1.2 一维数组的定义
- 所谓一维数组是指只有一个下标的数组,它在计算机的内存中是连续存储的
- 格式
<存储类型> <数据类型> <数组名>[<表达式>];
注:
编译时分配连续内存(内存字节数 = 数组维数 * sizeof(元素数据类型))
数组名表示内存首地址,是地址常量sizeof(数组名)是数组占用的总内存空间
1.3 一维数组的引用
- 数组必须先定义,后使用
- 只能逐个引用数组元素,不能一次引用整个数组
- 数组元素表示格式:数组名[下标],其中:下标可以是常量或整形表达式
1.4 一维数组的初始化
- 初始化方式:在定义数组时,为数据元素赋初值
- 说明
- 数组不初始化,其元素值为随机数
- 对static数组元素不赋初值,系统会自动赋以0值
- 只给部分数组元素赋初值
- 代码示例
#include <stdio.h>
int main(int argc, const char * argv[])
{
int a[5] = {1,2,3}; // a[3] = a[4] = 0
int i = 0;
for (i = 0; i < 5; i++)
{
printf("%p = %d\n", &a[i], a[i]);
}
return 0;
}
- 结果
0x1A2B3C40 = 1
0x1A2B3C44 = 2
0x1A2B3C48 = 3
0x1A2B3C4C = 0
0x1A2B3C50 = 0
2.二维数组
2.1 二维数组的定义
- 格式(声明时列数不能省略,行数可以)
数据类型 数组名[常量表达式][常量表达式];
- 元素个数 = 行数 * 列数
2.2 二维数组的存放顺序
- 原因:内存是一维的
- 二维数组:按行序优先
2.3 二维数组的引用
- 格式
数组名[下标][下标];
- 二维数组元素的初始化
- 分行初始化
- 按元素排列顺序初始化
3.多维数组
- 具有两个或两个以上下标的数组成为多维数组
4.字符数组和字符串
4.1 字符数组
- 字符数组是元素的数据类型为字符类型的数组
- 字符数组的初始化
- 逐个字符赋值
- 用字符串常量
注:0(数值常用) = ‘\0’(字符常用) = NULL(宏定义,指针常用)
4.2 字符串
- C语言中无字符串变量,用字符数组处理字符串
- 字符串结束标志:‘\0’
5.字符串函数
- C库中实现了很多字符串处理函数
#include <string.h>
- 几个常见的字符串处理函数
- 求字符串长度的函数strlen
- 字符串拷贝函数strcpy
- 字符串连接函数strcat
- 字符串比较函数strcmp
5.1 求字符串长度函数strlen
- 格式
strlen(字符数组);
- 功能:计算字符串长度
- 返回值:返回字符串实际长度,不包括‘\0’在内
- \xhh表示十六进制数代表的符号
- \ddd表示八进制数代表的符号
5.2 字符串拷贝函数strcpy
- 格式
strcpy(字符数组1,字符串2);
- 功能:将字符串2,拷贝到字符数组1中去
- 返回值:返回字符数组1的首地址
- 说明
- 字符数组1必须足够大
- 拷贝时‘\0’一同拷贝
5.3 字符串连接函数strcat
- 格式
strcat(字符数组1,字符数组2);
- 功能:把字符数组2连到字符数组1后面
- 返回值:返回字符数组1的首地址
- 说明
- 字符数组1必须足够大
- 连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,新串最后加‘\0’
5.4 字符串比较函数strcmp
- 格式
strcmp(字符串1,字符串2);
- 功能:比较两个字符串
- 比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
- 返回值:返回int型整数
- 若字符串1<字符串2,返回负整数
- 若字符串1>字符串2,返回正整数
- 若字符串1 == 字符串2,返回零
6.字符串函数之扩展用法
#inluced <string.h>
strncpy(p,p1,n)复制指定长度字符串
strncat(p,p1,n)附加指定长度字符串
strcasecmp忽略大小写比较字符串
strncmp(p,p1,n)比较指定长度字符串
strchr(p,c)在字符串中查找指定字符(strrchr 反向查找)
strstr(p,p1)查找字符串
#inluced <ctype.h>
isalpha()检查是否为字母字符
isupper()检查是否为大写字母字符
islower()检查是否为小写字母字符
isdigit()检查是否为数字
tolower()将大写字母转换为小写字母字符
toupper()将小写字母转换为大写字母字符
注:EOF = ctrl d(退出)
总结
本章为嵌入式学习系列文章 第一章:C语言の第五节 数组和字符串