嵌入式课程day13-C语言指针

目录

十、指针

10.1了解指针

10.2指针使用

10.2.1指针定义:

10.2.2指针读写操作:

10.2.3指针变量空间大小

10.2.4指针偏移:


十、指针

10.1了解指针

指针:是变量 ,存储地址编号的。

地址:内存按照 字节 进行编号,1个字节1个编号  4GB

一般地址编号用16进制表示  %p

空间:指针本身的空间  指针指向的空间

10.2指针使用

10.2.1指针定义:

指针类型 指针名;

指针类型:指针指向对象的类型 *        

指针定义的时候:* -- 是指针的标记

例子:

定义一个指针指向int型的空间,保存int型的地址。

 int * p;   // int *p;   int* p;

// 定义一个变量,变量名: p
定义一个指针指向double型空间,
double * q;

10.2.2指针读写操作:

练习1、定义一个指针指向int型的空间,保存int型的地址。

int a = 30;  // int型的空间  -- int型的地址 -- &a

定义一个指针指向a ,保存a的地址。

int * p;            

// 指针指向a ,保存a的地址

p = &a;    // p -- 指针本身的空间  *p --- 解地址 -- 指针指向的空间

#include<stdio.h>int main (void)
{int a = 30;int* p;p = &a;printf ("%p %p\n", p, &a);printf ("%d %d\n", *p, a);*p = 100;printf ("%d %d\n", *p, a);return 0;
}

10.2.3指针变量空间大小

4/8 个字节,   32位系统 -4个字节  64位系统 -- 8个字节  指针变量空间大小和指向对象类型没有系,

实质: 指针存地址编号的。

#include<stdio.h>int main (void)
{int* p;char* q;double* temp;int (*k)[3];printf ("%d %d %d %d\n", sizeof (p), sizeof (q), sizeof (temp), sizeof (k));  // 4 / 8printf ("%d %d %d %d\n", sizeof (*p), sizeof (*q), sizeof (*temp), sizeof (*k)); // 4 1 8 12return 0;
}

10.2.4指针偏移:

指针偏移和指针指向的对象类型有关,就以指针指向的对象类型为单位进行偏移。        

指针指向数组里面的数据进行偏移。

地址是常量 , 指针是变量,存储地址编号的。

int a[5] = { 5,78,9,100,34 };// 定义一个指针,指向数组里面的元素a[0],然后再进行偏移
int* p;// p指向a[0],保存a[0]的地址
p = a;    // p = &a[0];printf ("%p %p\n", p, p + 1);  // ----------------------------------------------------------------
char arr[] = { '2','4','5','6' };// 定义一个指针,指向数组里面的元素arr[2],然后再进行偏移
char* q;// q指向arr[2]
q = arr + 2;   // arr + 2  === &arr[2]printf ("%p %p %p\n", q - 1, q, q + 1);
#include<stdio.h>int main (void)
{int a[5] = { 5,78,9,100,34 };// 定义一个指针,指向数组里面的元素a[0],然后再进行偏移int* p;// p指向a[0],保存a[0]的地址p = a;    // p = &a[0];printf ("%p %p\n", p, p + 1);      // 偏移 - 4个字节 printf ("%p %p\n", &a[0], &a[0] + 1);char arr[] = { '2','4','5','6' };// 定义一个指针,指向数组里面的元素arr[2],然后再进行偏移char* q;// q指向arr[2]q = arr + 2;   // arr + 2  === &arr[2]printf ("%p %p %p\n", q - 1, q, q + 1);  // 偏移-- 1个字节  return 0;
}

练习:倒转数组,用指针的方式

#include<stdio.h>
main ()
{int a[] = { 10,9,8,7,6,5,4,3,2,1,0, };//定义指针指向首元素和尾元素int* first = a;int* last = &a[10];//定义中间变量用于交换int temp;//开始交换do{temp = *first;*first = *last;*last = temp;} while (++first <= --last);//输出检验int i = 0;for (i = 0; i < 11; i++){printf ("%d ", a[i]);}return 0;
}

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

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

相关文章

蓝桥杯每日真题 - 第15天

题目&#xff1a;&#xff08;钟表&#xff09; 题目描述&#xff08;13届 C&C B组B题&#xff09; 解题思路&#xff1a; 理解钟表指针的运动&#xff1a; 秒针每分钟转一圈&#xff0c;即每秒转6度。 分针每小时转一圈&#xff0c;即每分钟转6度。 时针每12小时转一圈…

在 Node.js 中解决极验验证码:使用 Puppeteer 自动化

近年来&#xff0c;极验验证码在区分真实用户和自动化系统方面越来越先进&#xff0c;使其成为网页抓取和自动化的重大障碍。如果您正在使用 Node.js 并致力于在自动化流程中解决极验验证码&#xff0c;那么使用 Puppeteer 是一种有效的方法。Puppeteer 提供了一个高级 API 来控…

centos7 升级openssl 与升级openssh 安装卸载 telnet-server

前言&#xff1a; 服务器被安全扫描&#xff0c;扫出了漏洞需要修复&#xff0c;根据提示将openssh升级为9.8p1的版本&#xff0c;同时需要升级openssl&#xff0c;但是升级openssh可能会导致ssh连接失败&#xff0c;从而无法继续操作&#xff0c;特别是远程机房尤为危险&#…

PETR/PETRv2/StreamPETR论文阅读

1. PETR PETR网络结构如下&#xff0c;主要包括image-backbone&#xff0c;3D Coordinates Generator&#xff0c;3D Position Encoder&#xff0c;transformer Decoder四个模块。 把N 个视角的图像输入到骨干网络中以提取 2D 多视图特征。在 3D 坐标生成器中&#xff0c;首先…

若点集A=B则A必能恒等变换地变为B=A这一几何常识推翻直线(平面)公理

黄小宁 关键词&#xff1a;“更无理”复数 复平面z各点z的对应点z1的全体是z1面。z面平移变为z1面就使x轴⊂z面沿本身平移变为ux1轴。R可几何化为R轴&#xff0c;R轴可沿本身平移变为R′轴&#xff0c;R′轴可沿本身平移变为R″轴&#xff0c;...。直线公理和平面公理使几百年…

在Node.js中如何使用TypeScript

第一步&#xff1a;创建一个Node.js项目的package.json文件 npm init -y第二步&#xff1a;添加TypeScript、添加node.d.ts npm install typescript -D npm install types/node -D第三步&#xff1a;初始化一个tsconfig.json文件 npx tsc --init --rootDir src --outDir lib…

海康大华宇视视频平台EasyCVR私有化视频平台服务器选购主要参数有哪些?

在构建现代服务器和视频监控系统时&#xff0c;选择合适的硬件配置和关键技术是确保系统性能和稳定性的基础。服务器选购涉及到多个关键参数&#xff0c;这些参数直接影响到服务器的处理能力、数据存储、网络通信等多个方面。 同时&#xff0c;随着视频监控技术的发展&#xf…

async 和 await的使用

一、需求 点击按钮处理重复提交&#xff0c;想要通过disabled的方式实现。 但是点击按钮调用的方法里有ajax、跳转、弹窗等一系列逻辑操作&#xff0c;需要等方法里流程都走完&#xff0c;再把disabled设为false&#xff0c;这样下次点击按钮时就可以继续走方法里的ajax等操作…

【Pikachu】XML外部实体注入实战

若天下不定&#xff0c;吾往&#xff1b;若世道不平&#xff0c;不回&#xff01; 1.XXE漏洞实战 首先写入一个合法的xml文档 <?xml version "1.0"?> <!DOCTYPE gfzq [<!ENTITY gfzq "gfzq"> ]> <name>&gfzq;</name&…

g++与gdb简单学习

本文的内容由智谱清言产生 ------ 使用g编译C程序 使用gdb设置断点&#xff0c;反汇编代码&#xff0c;单步执行 int main() {int a 1;a;return 0; } 1.编译程序&#xff1a;使用 g 编译器将 C 源代码编译成 IA-32 可执行文件。 这可以通过添加 -m32 标志来实现&#xff0…

【小白可懂】微信小程序---课表渲染

结果展示&#xff1a;&#xff08;代码在最后&#xff09; WeChat_20241116174431 项目简介 在数字化校园建设的大背景下&#xff0c;为了更好地服务于在校师生&#xff0c;我们开发了一款基于微信小程序的课表管理系统。该系统采用了现代化的前端技术和优雅的设计风格&#x…

【实验11】卷积神经网络(2)-基于LeNet实现手写体数字识别

&#x1f449;&#x1f3fc;目录&#x1f448;&#x1f3fc; &#x1f352;1. 数据 1.1 准备数据 1.2 数据预处理 &#x1f352;2. 模型构建 2.1 模型测试 2.2 测试网络运算速度 2.3 输出模型参数量 2.4 输出模型计算量 &#x1f352;3. 模型训练 &#x1f352;4.模…

Python酷库之旅-第三方库Pandas(221)

目录 一、用法精讲 1036、pandas.DatetimeIndex.to_pydatetime方法 1036-1、语法 1036-2、参数 1036-3、功能 1036-4、返回值 1036-5、说明 1036-6、用法 1036-6-1、数据准备 1036-6-2、代码示例 1036-6-3、结果输出 1037、pandas.DatetimeIndex.to_series方法 10…

【WPF】Prism学习(三)

Prism Commands 1.复合命令&#xff08;Composite Commanding&#xff09; 这段内容主要介绍了在应用程序中如何使用复合命令&#xff08;Composite Commands&#xff09;来实现多个视图模型&#xff08;ViewModels&#xff09;上的命令。以下是对这段内容的解释&#xff1a; …

【Oracle篇】掌握SQL Tuning Advisor优化工具:从工具使用到SQL优化的全方位指南(第六篇,总共七篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

【一键整合包及教程】AI照片数字人工具EchoMimic技术解析

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的生活。EchoMimic&#xff0c;作为蚂蚁集团旗下支付宝推出的开源项目&#xff0c;不仅为数字人技术的发展掀开了新的一页&#xff0c;更为娱乐、教育、虚拟现实、在线会议等多个领域带…

基于Lora通讯加STM32空气质量检测WIFI通讯

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着环境污染问题的日益严重&#xff0c;空气质量的监测与管理已经…

GitLab 降级安装出现 500 错误,如何解决?

本文分享 GitLab 中文版在降级的过程中出现 500 错误的修复方法。 写在前面 强烈不建议大家自行降级&#xff0c;如果真有降级需求&#xff0c;要么自己能力过硬&#xff0c;要么寻求专业服务【https://dl.gitlab.cn/cm33bsfv】&#xff0c;要不出问题很麻烦&#xff01; 问…

2024-11-16 串的存储结构

一、顺序存储。 1.首先定一个静态数组&#xff0c;然后定义i记录串的实际长度。&#xff08;缺点&#xff1a;长度不可变&#xff09; 2.使用malloc申请动态空间&#xff0c;定义指针指向串的地址。&#xff08;需手动ferr&#xff09; 方案一&#xff1a; 数组末尾记录长度 …

PCHMI串口接收实验

插入的唯一一行代码 config1.START((Control)this, System.Reflection.Assembly.GetExecutingAssembly().GetTypes(), null);