嵌入式学习【第二周】

一、数组

请添加图片描述

关于初始化
Int arr【】;//error
只有全部初始化的时候才可以这样去做!!!
Int arr[ ] = {1,2,3}; //可以,编译器自动计算数组元素的个数
访问
案例:判断以下四个是否正确
1、int a[5];(a[0]----a[4])
   a[4] = {1,2,3,4,5} ;  //error 没有a[5]
2、int a[5];
   a = {1,2,3,4,5};  //error数组名表示数组首元素的地址
3、int a[ ] = {0};  //对,没有意义 int a = 04、int a[ ];  //error 编译器不知道要分配多大的内存空间
冒泡排序

思想:从左向右两两依次比较,如果前一个数大于后一个数,就交换位置;反之,不变。
在这里插入图片描述

二、字符数组

请添加图片描述

1、字符串处理函数
1.1 求字符串的长度

strlen(数组名);
返回值:字符串的长度
功能:计算字符串的实际长度,不包括‘\0’

1.2 字符串拷贝函数

strcpy(数组1,数组2/字符串);
puts(数组1);
功能:将数组2的内容完全拷贝给数组1,包括‘\0’,相当于完全拷贝
strncpy(数组1,数组2/字符串,n);
功能:将数组2的前n个拷贝给数组1,不包含’\0’;

1.3 字符串连接函数

strcat(数组1,数组2/字符串)
功能:将数组2的内容连接至数组1中,会覆盖数组1的‘\0’
注意:数组1的内存大小要能够存储下两个数组1和数组2连接出来的结果
strncat(数组1,数组2/字符串,n)
功能:将数组2 的前n个字符连接到数组1后面

1.4 字符串比较函数

strcmp(数组1,数组2/字符串);
功能:比较两个字符串的大小
返回值:
当字符串1 > 字符串2,返回值大于0
当字符串1 == 字符串2,返回值等于0
当字符串1 < 字符串2,返回值小于0
如何比较:从左往右依次对字符串中的ascii码值就行比较,直到遇到ascii码值不同时或‘\0’结束比较

三、二维数组

请添加图片描述

四、函数

请添加图片描述

五、指针

请添加图片描述

二级指针

在这里插入图片描述

六、指针的算数运算

总结:
p+n:p+n相当于向地址增大的方向移动n个数据类型
实际的变化:向地址增大的方向移动:n *sizeof(p指向的数据类型)个字节
p-n: p-n相当于向地址减小的方向移动n个数据类型
实际的变化:向地址减小的方向移动:n*sizeof(p指向的数据类型)个字节
p++:p向地址增大的方向移动一个数据类型(p指向的数据类型)
p--:p向地址见效的方向移动一个数据类型(p指向的数据类型)
p-q:(p和q的数据类型要相同)//两个之间相差的元素
注意:
1、指针可以进行计算,同时指针常量也可以进行计算,++,--除外
2、只有在访问连续的空间时,指针的运算才有意义

七、指针和二维数组的关系

在这里插入图片描述

总结:
1、a、 &a[0]&a[0][0]他们的值相同,但是意义不一样
a: int (*)[3],:指向一维数组的指针
a[0]:int *:指向一个整型变量
a[0][0] : int 
2、为什么说a不是int**
如果a的数据类型是int**,那么他指向的数据类型就是int *,那么他+1,应该移动8个(64os)/4个(32os)字节,然而!我们给a+1,他移动了12个字节,移动了一个数组。所以,a指向的是一维数组(这个数组中有三个元素)
3、int a[2][3] :理解:a中有两个元素,这两个元素都是一维数组,这个一维数组中又有三个元素,都为int类型
4、指向的是(a[0]),a[0]又是一个一维数组,所以我们说a指向了一个一维数组

八、数组指针和指针数组

请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值