新闻详情

新闻详情

首页 / 资讯中心 / 详情

学习嵌入式Day13:C语言之指针

发布时间:2026/10/1 20:03:12来源:尧图网络
学习嵌入式Day13:C语言之指针
补充1.如果定义多个指针变量int *p,*q,*r; // p、q、r全部都是int指针 int a,b,c,*p,*q; // a,b是普通整型变量p,q才是指针int *p;这里的 * 是修饰符修饰后面的变量p代表p是指针变量。存放int类型变量的地址。*p a;这里的 * 是运算符取地址运算。2.野指针指针变量未初始化变量中是随机值指针没有明确的指向3.NULL空地址为了避免野指针定义指针时在没有确定指向的时候赋值为NULL。int *p NULL4.void * 空类型指针万能指针一、指针中的排序和查找算法1.选择排序void selectSort(int *begin, int *end) { int *p; for (; begin end; begin) { for(p begin1; p end; p) { if(*p *begin) { swap(p, begin); } } } }2.冒泡排序void bubbleSort(int *begin, int *end) { int *p; for (end; end begin; --end) { for(p begin; p end; p) { if(*(p1) *p) { swap(p1, p); } } } }3.插入排序void insertSort(int *begin, int *end) { int *p begin; int *q NULL; for (; p end; p) { int t *p; q p; while (q begin *(q-1) t) { *q *(q-1); --q; } *q t; } }4.快速排序分治法步骤1.选择基准值2.从右往左找到第一个比基准值小的值标记为end3.从左往右找到第一个比基准值大的值标记为begin4.交换end标记的值和begin标记的值5.重复2~4直到end和begin相遇6.相遇时将相遇位置上的值和基准位置上的值交换7.比基准值小的部分和比基准值大的部分分别继续重复1~7递归void quickSort(int *begin, int *end) { //递归结束条件 if (begin end) { return; } //记录初始位置 int *p begin; int *q end; //1.确认基准值首元素 int *k begin; while(begin end)//5.判断end和begin是否相遇 { //2.从右向左遍历找到第一个比基准值大的值标记为end while (*k *end end begin) { --end; } //3.从左向右遍历找到第一个比基准值小的值标记为begin while (*k *begin end begin) { begin; } //4.交换end和begin标记的值 swap(begin, end); //重复 } //将end和begin相遇时的值和基准值进行交换左边都是比基准值小的值右边都是比基准值大的值 swap(begin, k); //在比基准值小的部分继续进行快速排序 quickSort(p, end-1); //在比基准值大的部分继续进行快速排序 quickSort(begin1, q); }5.二分查找int *binaryFind(int *begin, int *end, int n) { int *mid; while (begin end) { mid begin (end - begin)/2; if (*mid n) { end mid - 1; }else if (*mid n) { begin mid 1; }else { break; } } if (end begin) { return NULL; }else { return mid; } } //递归 int * binaryFindR(int *begin, int *end, int n) { if(begin end) { return NULL; } int *mid begin (end - begin)/2; if (*mid n) { end mid - 1; return binaryFindR(begin, end, n); }else if (*mid n) { begin mid 1; return binaryFindR(begin, end, n); }else { return mid; } }二、指针操作字符型数组char s[] hello; //操作字符串字符串是一种特殊的字符型一维数组末尾带\0结束标记。指针操作s中的数据需要获得首元素地址s[0] //char类型 s[0] //char * char *p s;//等价于char *p s[0];const和指针int puts(const char *s);const表示将所修饰的变量限定为只读遵循就近原则 离谁近就限定谁。如果函数只是读取字符串 / 数组数据不修改内容参数就加const。好处编译阶段就能发现非法修改兼容性更强可以接收 char*、数组名、字符串常量提高函数的适用性。const int a; //这个a此时只读 const char * p; //限定通过*p方式访问基类型 为 只读 不能修改基类型 char const * p; //限定通过*p方式访问基类型 为 只读 char * const p; //限定p本身为只读 表示p本身不能被修改 const char * const p; //p不能被修改 *p也不能被修改表示字符串的方式char s[] hello; //使用栈空间上的 字符串 char *s hello; //使用字符串常量区中字符串 const char *s hello; //更准确char *strcpy(char *dest, char *src); char *strcpy(char *dest, const char *src);目标地址 dest 内容需要修改不加 const源字符串 src 只读取添加 const 保护。三、总结指针可以直接操作内存地址配合数组、字符串、排序算法一起使用是入门阶段最大的难点。很多人觉得指针难本质是它非常抽象还能和前面学的变量、数组、函数全部串联起来。对于函数的这一块取地址和取值运算还要继续加强。明天是国庆节国庆节快乐
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于SpringBoot的宿舍管理系统实战:从需求到部署全流程解析 2026/10/1 21:01:49

基于SpringBoot的宿舍管理系统实战:从需求到部署全流程解析

基于SpringBoot的宿舍管理系统:从零到可交付的项目实战复盘每年这时候都会有人问"宿舍管理系统怎么选题""SpringBoot毕设怎么下手",这个题目确实经典,但经典不等于简单。我去年完整做了一版基于SpringBoot的宿舍管理系统…

阅读更多 →
大学生电子竞赛用的SMT设备有哪些推荐? 2026/10/1 21:01:49

大学生电子竞赛用的SMT设备有哪些推荐?

大学生电子竞赛用的SMT设备有哪些推荐? 这是为您生成的电子竞赛SMT设备选型指南HTML代码,围绕电赛备赛场景梳理了从制板、印刷到回流焊接的完整设备链路与采购要点。 html 大学生电子竞赛用的SMT设备有哪些推荐?常规配置是:PCB雕…

阅读更多 →
TLS 1.3前向安全审计:握手协议原理与CVE-2016-2183漏洞排查 2026/10/1 21:01:49

TLS 1.3前向安全审计:握手协议原理与CVE-2016-2183漏洞排查

我先说个结论:把“SSL/TLS 3.0新握手协议”这个标题扔到实际工程项目里,第一反应不是兴奋,而是得先做一轮概念校准。因为在真实的安全运维语境下,SSL 3.0是一个已经被RFC 7568明确废弃的古老协议,而带有“新握手”属性…

阅读更多 →
Facebook主页类型选错了?这两个选项一定要分清 2026/10/1 21:01:42

Facebook主页类型选错了?这两个选项一定要分清

最近不少人在创建Facebook公共主页时,发现多了一个主页类型选择,主要分为「商企」和「创作者」。 很多人看到这里就随便选了,但其实不同类型对应的使用场景并不一样。 一、做产品推广,优先考虑商企 如果你的Facebook主页主要是用来…

阅读更多 →
为什么RMUX比tmux快1.6到4.4倍?Rust终端复用器RMUX性能基准测试数据全解析 2026/10/1 21:01:42

为什么RMUX比tmux快1.6到4.4倍?Rust终端复用器RMUX性能基准测试数据全解析

为什么RMUX比tmux快1.6到4.4倍?Rust终端复用器RMUX性能基准测试数据全解析 【免费下载链接】rmux Universal Rust multiplexer with a typed SDK — drive any CLI or TUI app from code. Native on Linux, macOS, and Windows. 项目地址: https://gitcode.com/gh…

阅读更多 →
本地AWS云栈工具LocalStack:简介、原理、实战 2026/10/1 21:01:42

本地AWS云栈工具LocalStack:简介、原理、实战

概述 官网,开源(GitHub,65.1K Star,4.8K Fork)、Python实现、功能强大的本地AWS云栈工具,让开发者能够在离线环境中开发和测试云端及无服务器应用。虽然项目已于26年3月23日归档,但完全不影响学…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉