嵌入式系统学习Day7(C语言中的一维数组)
类型说明符数组名[常量表达式]说明:(1) 数组名的命名规则和变量名相同,遵循标识符命名规则。(2) 在定义数组时,需要指定数组中元素的个数,方括号中的常址表达式用来表示元素的个数,即数组长度。(3) 常数表达式中可以包括常量和符号常量,不能包含变量。(4)类型说明符 :这个数组中要放的是哪一种类型的数据。
一. 一维数组的定义
类型说明符 数组名 [常量表达式]
说明:
(1) 数组名的命名规则和变量名相同,遵循标识符命名规则。
(2) 在定义数组时,需要指定数组中元素的个数,方括号中的常址表达式用来表示元素的个数,即数组长度。
(3) 常数表达式中可以包括常量和符号常量,不能包含变量。
(4)类型说明符 :这个数组中要放的是哪一种类型的数据 。
二.一维数组元素的引用
int array[10]; //定义了一个数组
//定义了一个int型的数组
//定义了一个可以包含10个int型数据的一维数组
三.一维数组的初始化
(1)全部初始化
int a[10] = {1,2,3,4,5,6,7,8,9,10};
(2)部分初始化 ---值依次给到前面的元素,后面没给值的元素,默认初始成0
int a[10] = {1,2,3,4,5};
(3)不初始化 ---随机值
int a[10];
(4)初始化为 0
int a[10] = {};
int a[10] = {0};
说明:数组在存储上有连续性、单一性、有序性的特点。
四.一维数组中的排序问题
1.选择排序
选择排序法的思路是:在合适的位置上选择合适的数。
例如我们的数组是a[]={3,5,4,1,2},首先要确定a[0]位置上的值(默认为递增排序),所以要将此时要把a[1]a[2]...a[n-1]上的值都拿来比较,将其中最小的值1放入a[0]的位置,并把原来a[0]位置上的值放到那个最小值上的地址处{1,5,4,3,2}。然后要确认a[1]的值,所以拿a[2]a[3]...a[n-1]上的值都拿来比较,将其中最小的值放入a[1]的位置,并把原来a[1]位置上的值放到那个最小值上的地址处{1,2,4,3,5}。所以我们用两个循环来实现选择排序,第一个循环for(i=0;i<n-1;++i)用来确定数组的位置,第二个循环for(j=i+1;j<n;++j)来比较剩余的最小值来填到已确定数组的位置。
可以通过以下代码来实现

2.冒泡排序
冒泡法的思路是:将相邻两个数比较,将小的调到前头。所以程序运行第一趟就会把最大值调到数组的最后面,所以理论上最多运行n-1次就会实现冒泡排序。例如我们的数组是a[]={3,5,4,1,2},运行一趟的结果就是{3,4,1,2,5},运行两趟就是{3,1,2,4,5}以此类推。用for(i=0;i<n-1;++i)来控制趟数,用for(j=0;j<n-1-i;++j)来实现一趟的比较,如果a[j]>a[j+1],那就将两数调换位置,否则就不调换位置。
可以通过以下代码来实现

3.插入排序
插入排序的思想是找到合适的位置进行插入。
例如我们的数组是a[]={3,5,4,1,2},首先把a[1]的值与a[0]的值做比较,如果a[1]的值比a[0]的值小则插入到a[0]的前面,否则插入a[0]后面,然后处理a[2]的值,如果a[2]>a[1],插在a[1]后面,如果a[2]<a[0],那就插在a[0]前面,如果a[1]>a[2]>a[0],那就插在a[0]与a[1]中间。理论上最多运行n-1次就会完成插入排序。
(1)非原地插入排序
(2)非原地插入排序
与原地插入排序的不同就是将数据插入在新的数组上,道理是相同的。

4.快速排序(现阶段没有学)
五.查找(二分查找)
二分查找的思想就是找到数组的中间值与要寻找的数字进行比较,如果要寻找的数字小于中间值,则可以将范围缩小在初始值与中间值前一位之间,循环这个过程。

六.字符型一维数组
char s[10]; //字符这种数据、
其在内存上存储的模式是这样的char s[10] = {'h','e','l','l','o','\0'};特殊在 ---它始终有一个结束标志 '\0'。
数组特点:
1.连续性
2.单一性
3.有序性
七.字符串处理函数
1.gets
其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数 组的起始地址。如执行下面的函数: gets(str) 从键盘输入: Computer/将输入的字符串"Computer"送给字符数组 str(请注意,送给数组的共有 9 个字符,而不是 8 个字符),函数值为字符数组 str 的起始地址。一般利用 gets 函数的目的是向字符数组 输入一个字符串,而不大关心其函数值。
2.puts
puts (字符数组) 其作用是将一个字符串(以'\O'结束的字符序列)输出到终端。假如已定义 str是一个字 符数组名,且该数组已被初始化为"China"。
3.strlen
strlen (字符数组) strlen 是 STRing LENgth(字符串长度)的缩写。它是测试字符串长度的函数。函数 的值为字符串中的实际长度(不包括'\o'在内)。例如: char str[lO]= {"China''.); printf (" % d", strlen(str)); 输出结果不是 10,也不是 6,而是 5。也可以直接测试字符串常量的长度,例如: strlen("China'');
4.strcpy
strcpy(s2,s1);
#include <string.h>
char *strcpy(char *dest, const char *src);
功能:
将src中字符串,复制到dest中
参数:
@dest 目标字符串所在空间 //地址
@src 源字符串所在的空间 //地址
返回值:
成功 返回就是dest
失败 NULL
5.strcat
#include <string.h>
char *strcat(char *dest, const char *src);
功能:
将src中字符串,拼接到dest中
参数:
@dest 目标字符串所在空间 //地址
@src 源字符串所在的空间 //地址
返回值:
成功 返回就是dest
失败 NULL
6.strcmp
#include <string.h>
int strcmp(const char *s1, const char *s2);
功能:
比较s1与s2
参数:
@s1 s1字符串所在空间 //地址
@s2 s2字符串所在的空间 //地址
返回值:
成功
> 0 s1 > s2
< 0 s1 < s2
== 0 s1 == s2
失败 NULL
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)