当前位置: 首页 > news >正文

嵌入式开发学习日志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);

程序:

 

 

相关文章:

  • Elasticsearch:我们如何在全球范围内实现支付基础设施的现代化?
  • 【BUG】‘DetDataSample‘ object has no attribute ‘_gt_sem_seg‘
  • BRAFAR: Bidirectional Refactoring, Alignment, Fault Localization, and Repair...
  • Listremove数据时报错:Caused by: java.lang.UnsupportedOperationException
  • Win11/Win10无法保存ip设置提示请检查一个或多个设置并重试怎么办?
  • [人机交互]协作与通信的设计
  • 二叉树—中序遍历—非递归
  • centos的根目录占了大量空间怎么办
  • 大语言模型(LLM)领域,有几项显著的进展和技术突破
  • 如何用Java读取PDF
  • 自然语言处理之情感分析:ALBERT在社交媒体的应用技术教程
  • 家庭宽带IP与IDC机房IP
  • ϵ-prediction和z0-prediction是什么意思
  • Day17 聚类算法(K-Means、DBSCAN、层次聚类)
  • HarmonyOS 5.0 低时延音视频开发​​
  • 【硬核数学】0. 序章:万丈高楼平地起,AI数学筑基之旅《从零构建机器学习、深度学习到LLM的数学认知》
  • 数字图像相关法在薄板变形测量中的实践
  • Apache Velocity代码生成简要介绍
  • 单例模式都有哪些?有什么区别?
  • 求组合数【递推+快速幂+卢卡斯+线性筛】
  • AMD:预计美国芯片出口管制将对全年营收造成15亿美元损失
  • 农行原首席专家兼浙江省分行原行长冯建龙主动投案被查
  • 陈雯出任外交部离退休干部局局长,此前为外交部办公厅副主任
  • 巴基斯坦:印度向巴3处地点发射导弹
  • 特朗普称不会为了和中国谈判而取消对华关税,外交部回应
  • 让党的理论“飞入寻常百姓家”,他如何做到有新意?