嵌入式开发学习日志Day14

 一、指针的加法运算

 注意:一边为指针,一边为整型;

            地址与地址之间不能求和,但可以求差(如果相减,表示之间相差几个基类型字节,根据正负可以判断谁在前谁在后),必须保证基类型相同

eg:

int a[] = {1,2,3,4,5,6,7,8,9,0};
int *p = a;
p + 1;
pprintf("%d\n",a);

地址加n,实际是地址向后偏移sizof (基类型)乘以n个字节;

(1)判断电脑是小端存储还是大端存储; 

(2)求一个数组中的最大值;

程序:

(3)将一个数组中的元素逆序输出; 

 

 (4)用指针进行选择排序;

程序:

二、空指针 NULL

一般定义:

#define NULL (0)

 空指针无法进行指针运算;

空指针表示一种状态,指没有指向任何地址;该地址指向的空间不可被访问;

 防止野指针的方法: int *p = NULL

eg:查找数组中的数;

程序:

 

 三、指针的比较大小

指针比较大小时,基类型必须相同;

eg:便利数组;

程序:

 

 (2)将数组中的元素逆序输出;

(3)用函数的递归调用将数组逆序输出; 

 程序:

 四。快速排序法

迭代法加递归调用

(1)先将数组的第一个值作为基准数;

(2)从右往左找一个比基准数小的数q;(必须先从右往左)

(3)从左向右找一个比基准数大的数p;

(4)然后交换p和q;循环上述操作;

(5)用p和q相遇的元素和基准数交换;

(6)然后用中间的数将其分为两个小数组;重复操作;

eg:快速排序法;

程序:

(1)选择排序法

程序:

(2)冒泡排序法

程序:

 

(3)用二分法查找数组中的元素;

 练习:

(1)用插入法排序;

程序;

(2)使用一对迭代器,并采用函数递归调用的方式实现二分查找, int *binaryFind(int *begin, int *end, int n);

程序:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值