嵌入式学习 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.rhkb.cn/news/247774.html

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

相关文章

Python爬虫解析库安装

解析库的安装 抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如 lxml、Beautiful Soup、pyquery 等。此外,还提供了…

【C/C++ 02】希尔排序

希尔排序虽然是直接插入排序的升级版本,和插入排序有着相同的特性,即原始数组有序度越高则算法的时间复杂度越低(预排序机制),但是是不稳定排序算法。 为了降低算法的时间复杂度,所以我们需要在排序之前尽…

美化背景(拼图小游戏)

package Puzzlegame.com.wxj.ui;import javax.swing.*; import javax.swing.border.BevelBorder; import java.util.Random;public class GameJframe extends JFrame { //游戏主界面 //创建一个二维数组//目的:管理数据//加载图片的时候,会根据二维数组中…

BabylonJS 6.0文档 Deep Dive 摄像机(六):遮罩层和多相机纹理

1. 使用遮罩层来处理多个摄影机和多网格物体 LayerMask是分配给每个网格(Mesh)和摄像机(Camera)的一个数。它用于位(bit)级别用来指示灯光和摄影机是否应照射或显示网格物体。默认值为0x0FFFFFFF&#xff…

【java】常见的面试问题

目录 一、异常 1、 throw 和 throws 的区别? 2、 final、finally、finalize 有什么区别? 3、try-catch-finally 中哪个部分可以省略? 4、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗&#…

SpringMVC 自动配置

SpringMVC 自动配置 一、WebMvcAutoConfiguration(SpringMVC自动配置)二、DisPatcherServletAutoConfiguration.class(中央调度器自动配置)三、WebMvcConfigurationSupport(SpringMVC组件配置类)四、Servle…

CSS 星空按钮

<template><button class="btn" type="button"><strong>星空按钮</strong><div id="container-stars"><div id="stars"></div></div><div id="glow"><div class=…

安全小记-ngnix负载均衡

目录 一.配置ngnix环境二.nginx负载均衡 一.配置ngnix环境 本次实验使用的是centos7,首先默认yum源已经配置好&#xff0c;没有配置好的自行访问阿里云镜像站 https://developer.aliyun.com/mirror/ 接着进行安装工作 1.首先创建Nginx的目录并进入&#xff1a; mkdir /soft &…

IS-IS:03 ISIS链路状态数据库

一个 OSPF 链路状态数据库是若干条 LSA 的集合。与此相似&#xff0c;一个 IS-IS 链路状态数据库是若干条 LSP 的集合。与 OSPF 链路状态数据库不同&#xff0c; IS-IS 链路状态数据库有 level-1 和 level-2 之分。 在IS-IS 协议中&#xff0c;每一条 LSP 都有一个剩余生存时间…

基于UDP的套接字通信(附通信代码)

基于UDP的套接字通信 udp是一个面向无连接的&#xff0c;不安全的&#xff0c;报式传输层协议&#xff0c;udp的通信过程默认也是阻塞的。 不需要建立连接 UDP通信过程中&#xff0c;每次都需要指定数据接收端的IP和端口 UDP不对收到的数据进行排序&#xff0c;在UDP报文的…

Adobe ColdFusion 反序列化漏洞复现(CVE-2023-38203)

0x01 产品简介 Adobe ColdFusion是美国奥多比(Adobe)公司的一套快速应用程序开发平台。该平台包括集成开发环境和脚本语言。 0x02 漏洞概述 Adobe ColdFusion存在代码问题漏洞,该漏洞源于受到不受信任数据反序列化漏洞的影响,攻击者通过漏洞可以代码执行,可导致服务器失…

第17节-高质量简历写作求职通关-投递反馈

&#xff08;点击即可收听&#xff09; 投递跟进和感谢信 如果对一家公司特别心仪&#xff0c;但是投递简历后一直得不到回复怎么办&#xff1f; 面试之后觉得自己没有表现好怎么办&#xff1f; 面试完几天了&#xff0c;依然没有得到回应怎么办&#xff1f; 这个时候你需要写一…

RabbitMQ多种工作场景详解

目录 1、hello world体验 2、Work queues 工作序列 3、Publish/Subscribe订阅与发布 4、Routing 基于内容的路由 5、Topics 基于话题的路由 6、Headers 头部路由机制 7、Publisher Confirms 发送者消息确认 ​ 1、发布单条消息 ​ 2、发送批量消息 ​ 3、异步确认消息…

【JVM】运行时数据区域,内存如何分配和对象在内存中的组成

目录 一.运行时数据区域 1.线程独享 2.线程共享 二.内存如何分配 1.指针碰撞法 2.空闲列表法 3.TLAB 三.对象在内存中的组成 ​编辑1.对象头 2.实例数据 3.对齐填充 一.运行时数据区域 1.线程独享 &#xff08;1&#xff09;栈 虚拟机栈&#xff1a;每个 Java 方法在…

GPT-SoVITS 测试

开箱直用版&#xff08;使用 AutoDL&#xff09; step1 打开地址 https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official 选择 AutoDL创建实例&#xff0c;选择 3080ti 机器 step2 创建好实例之后&#xff0c;进入命令行&#xff0c;输入命令 echo {}>…

Vue学习之使用开发工具创建项目、gitcode管理项目

Vue学习之使用开发工具创建项目、gitcode管理项目 翻阅与学习了vue的开发工具&#xff0c;通过对比最终采用HBuilderX作为开发工具&#xff0c;以下章节对HBuilder安装与基础使用介绍 1. HBuilder 下载 从HbuildX官网&#xff08;http://www.dcloud.io/hbuilderx.html&#…

Mac安装配置maven

Mac安装配置maven 官网下载地址&#xff1a;https://maven.apache.org/download.cgi 下载好以后解压配置 maven 环境变量 打开终端&#xff0c;输入命令打开配置文件./bash_profile open ~/.bash_profile输入i进入编辑模式,进行maven配置; MAVEN_HOME为maven的本地路径 ex…

opencv——将2张图片合并

效果演示&#xff1a; 带有绿幕的图片的狮子提取出来&#xff0c;放到另一种风景图片里&#xff01; 1. 首先我们要先口出绿色绿幕&#xff0c;比如&#xff1a; 这里将绿色绿色绿幕先转为HSV&#xff0c;通过修改颜色的明暗度&#xff0c;抠出狮子的轮廓。 代码 &#xff1a…

CSS3的学习笔记

CSS3的学习笔记 什么是css: CSS是层叠样式表&#xff08;Cascading Style Sheets&#xff09;的缩写&#xff0c;是一种用来描述网页样式和布局的标记语言。它可以控制网页中的文字大小、颜色、间距、背景、边框、布局等方面&#xff0c;使网页更加美观和易于阅读。通过CSS&a…

HarmonyOS NEXT 星河版项目案例

参考代码&#xff1a;HeimaHealthy: 鸿蒙项目案例练习 (gitee.com) 1.欢迎页面 Entry Component struct WelcomePage {State message: string Hello Worldbuild() {Column({space: 10}) {Row() {// 1.中央slogonImage($r(app.media.home_slogan)).width(260)}.layoutWeight(…