嵌入式学习 Day13

一. 指针总结

1.指针概念
  a.指针 --- 地址 ---内存单元编号  
  b.指针 --- 数据类型 ---指针类型   
  
  不同语境:
  定义一个指针               //指针类型的变量 
  打印某个变量的指针   //指针 --地址   
     
2.指针变量的定义
  基类型 * 变量名
  
  a.基类型 
    数据类型
    基本数据类型 
    数组类型 
    指针类型
  b. *       //定义时候的 * 表示定义的是一个 指针类型的变量 
  c. 变量名 

eg:
  int a,b,*p,*q; //p和q都是指针类型的变量 ;a,b是 int型变量

  注意:
  1.指针变量的 大小 64位(8字节) 32位(4字节)
  2.指针类型 --- 存储的是 地址 这种特殊的数据 
  
  指针变量的给值:
  int *p;  //野指针 --- 随机值 ---被当做了地址   
             //避免野指针 -- 一般初始化为NULL 
  *p     
  step1: 拿p中地址值 到内存中定位 
  step2: 从定位处开始,偏移基类型大小的一块空间sizeof(基类型)
  step3: 被当做了基类型变量来看 

  *p 整体来看就是一个基类型的变量   
 
  
3.核心用途(80%)
  被调修改主调 
  
  修改:
  1.修改谁,就传谁的地址 
  2.*p(间接访问)运算 
  
4.指针 + 一维整型数组  


  指针 操作 一维整型数组 

  int a[10];

  int *p = a; 

  1.数组本身的特点 (连续性,单一性,有序性)
  2.p+1   --- 偏移了一个积累性 

  通过指针访问到数组元素:
 
5.指针运算 

 &
 * 
 p+1
 p++ 
 p-1
 p-- 
 p-q     前提: 同一类型的指针才能相减, 相减的结果表示之间差了几个基类型的空间

 p+q    指针不能做加法运算 
 
 迭代
                     
 b                          e
 1 2 3 4 5 6 7 8 9 10

   

    b                   e
 1 2 3 4 5 6 7 8 9 10
 ........

                 b
                 e     
 1 2 3 4 5 6 7 8 9 10

练习:逆序,以迭代实现
 

作业:
   迭代的方式 ,实现选择 冒泡  插入


  
思考题:
     二分查找 用递归方式实现 

     

注意:函数头中定义了返回值的类型,这说明函数是有返回值的,而函数体中并没有写return

此时函数会把所执行的最后一句代码的值作为返回值带出来。

6.指针 + 一维字符型数组
char s[] = "hello";

char *p = s;    //s数组名 --- 代表 数组首元素的地址 
                      //s[0]  --->类型 char型
                      //&s[0] --->char * //地址类型 
        
练习:
   实现一个输入操作 

练习:
   字符串逆序 ---通过指针 
              b       e
   "hello" // h e l l o '\0'

7.const

int puts(const char *s)
    {
    }

//const char *s --在函数里面 不能通过*s修改到外面的数据 

就近原则 -- 离谁近,就限定谁的  

const int *p = &a; //表示限定 基类型 为只读变量(无法通过*p修改,但可通过对a赋值修改) 
int const *p = &a;     //表示限定 基类型 为只读变量

int *const p = &a;     //限定p为只读 

const int * const p = &a;  //p不能被修改,指向的目标类型不能被修改  (是不能通过*p,但可通过赋值) 


const char *p = "hello"     //hello为常量,存储在常量区,无法通过*p修改

const char s[ ] = "hello"   //s开辟在栈上,hello存储在常量区,相当于复制了一份常量区上的数据初始化了一下s那块空间


    好处:
    1.可以接收 字符数组名   //char *
      也可以接收 字符串常量 //const char *
      提高了参数的适用性 
    2.避免了 可能出现的修改的操作 
      可以将 运行时的错误,提前到 编译时发现 
      
    const char * p 可以用来保存字符串常量的地址 
    


  8.快速排序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/439209.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytest中doctests的测试方法应用

在 Python 的测试生态中,Pytest 提供了多种灵活且强大的测试工具。其中,doctests 是一种独特而直观的测试方法,通过直接从文档注释中提取和执行测试用例,确保代码示例的正确性。本文将深入介绍 Pytest 中 doctests 的测试方法,包括基本用法和实际案例,以帮助你更好地利用…

python3.8 安装缺少ssl、_ctypes模块解决办法

问题 安装pyhton3.8安装默认不依赖ssl 运行Flask项目时报错&#xff1a; Traceback (most recent call last):File "/usr/local/python3/bin/flask", line 8, in <module>sys.exit(main())File "/usr/local/python3/lib/python3.8/site-packages/flask…

TensorFlow2实战-系列教程9:RNN文本分类1

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、文本分类任务 1.1 文本分类 数据集构建&#xff1a;影评数据集进行情感分析&…

[C++历练之路]C++中的继承小学问

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a; C中&#xff0c;继承是一种面向对象编程的重要概念&#xff0c;它允许一个类&#xff08;子类/派生类&#xff09;从另一个类&#xff08;父类/基类&#xff09;继承属性和方法。继承是…

python统计分析——样本方差的分布

参考资料&#xff1a;用python动手学统计学 1、导入库 import numpy as np import pandas as pd import scipy as sp from scipy import statsfrom matplotlib import pyplot as plt import seaborn as sns 2、数据准备 建立一个平均数为4&#xff0c;标准差为0.8的正态分布…

ctfshow web72

下载源码&#xff1a; 开启环境&#xff1a; 本题设置了 open_basedir()&#xff0c;将php所能打开的文件限制在指定的目录树中&#xff0c;包括文件本身。 因为 ini_set() 也被限制了&#xff0c;所以 open_basedir() 不能用 ini_set() 重新设置绕过。 使用 php 伪协议 glob:…

前端框架---Vue2学习教程(上)

从HTML到现在一路跟过来的小伙伴们&#xff0c;坚持固然不容易&#xff0c;但我相信大家已经学到了不少&#xff0c;那么我们开始马不停蹄的进入前端的框架吧&#xff0c;下面讲的是Vue2&#xff0c;大家继续加油鸭&#xff01;&#xff01;&#xff01;&#xff01; Vue2 Vu…

Springboot使用数据库连接池druid

springboot框架中可以使用druid进行数据库连接池&#xff0c;下面介绍druid在springboot中使用和参数配置介绍。 数据库连接池&#xff08;Druid&#xff09;是一种用于管理数据库连接的机制&#xff0c;其工作原理和常见使用方法如下&#xff1a; 原理&#xff1a;数据库连接…

awk命令使用方法

简介 awk 是一种强大的文本处理工具&#xff0c;可以用于处理结构化的文本数据。它可以根据指定的模式和动作来筛选、处理和格式化文本。 下面是一些常见的 awk 命令使用方法。 详细介绍 基本语法&#xff1a; awk pattern { action } filename其中&#xff0c;pattern 是用…

短视频界的变革者:上海 AI lab 发布 Vlogger,几句话生成分钟级视频

现如今&#xff0c;vlog 已经成为我们日常生活的重要组成部分。无论是看视频学习休闲、记录珍贵瞬间还是分享生活见闻&#xff0c;视频已经成为人们表达创意和观点的独特媒介。 然而&#xff0c;与几秒钟的短视频不同&#xff0c;要创作出引人入胜、生动有趣的长视频&#xff…

微信积分系统怎么做_开启用户忠诚度之门

积分系统&#xff1a;开启用户忠诚度之门 在数字化时代&#xff0c;积分系统已经成为了企业与消费者之间互动的桥梁。它不仅是一种奖励机制&#xff0c;更是提升用户忠诚度、促进消费的重要手段。本文将深入探讨如何将积分系统作为主题&#xff0c;撰写一篇高质量的营销软文&a…

数据结构--顺序表的基本操作[王道]

截图来自王道数据结构公开课 目录 1.插入操作 代码 时间复杂度分析 2.删除操作 代码 时间复杂度分析 3.按值寻找(顺序查找) 代码 时间复杂度 4.按位寻找(按序号查找) 代码 快速回顾顺序表的定义以及特点&#xff1a;数据结构-顺序表的实现 [王道]-CSDN博客 本篇博…