嵌入式系列文章之第一章 C语言の第五节 数组和字符串

嵌入式(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语言の第五节 数组和字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值