v68.指针

1.取地址运算

1.1
在这里插入图片描述1.2
在这里插入图片描述

  • 打印出变量的地址,需要使用 %p,注意后面加运算符 & 。注意输出地址的代码格式。
  • %p会把这个值作地址来输出,输出的结果前面会加0x,并且以16进制的方式来输出地址
    在这里插入图片描述
  • 注意int 的大小是否和地址大小相同取决于编译器32架构还是64架构(地址和整数不是一定相同的
    在这里插入图片描述&去取地址的时候,必须对 一个变量 取地址!(如果不是一个变量,无法取地址)

1.3

  • 相邻变量的地址:
    如果两个变量储存在内存中是相邻的,那么他们的地址相差4字节(int类)
    在这里插入图片描述

  • 数组的地址:
    在这里插入图片描述发现int类数组相邻单元的地址差4字节
    在这里插入图片描述

2.指针

指针变量就是记录地址的变量
2.1
在这里插入图片描述在这里插入图片描述
“ *p ” 在这表示p是指针变量,它指向的是int。
p指向了i,即p的值就是i变量的地址
在这里插入图片描述

int* p,q;
int *p,q;
这两种代码是等效的
星号不是给int而是给p,即 *p 是一个int类变量
q只是一个普通的变量。如果要表达p,q都是指针变量:
int *p,*q;//p,q里面会有别的变量的地址
  • 指针变量的值是 具有实际值的变量的 地址,这个地址会指向实际的变量
  • 指针变量里面不会放实际的值
  • 普通变量的值是实际的值
    在这里插入图片描述2.2 作为参数的指针
    在这里插入图片描述
  • 如果f()函数需要指针变量作为参数,那么就需要传入变量的地址,而不可以传入变量本身或者变量的值
    在这里插入图片描述在main函数中的变量i的地址传入f()函数,并把i的地址交给了f函数中的变量p。使得f函数拥有能够访问外部变量i的能力了
    那么,p就是一个指针,它指向i这个变量。
    在这里插入图片描述
  • 如果函数要求传入的是普通变量,那么只会得到变量的值
    在这里插入图片描述2.3 访问
    在这里插入图片描述
    在这里插入图片描述
  • 将&i 和 p 做地址输出,结果是一样的。在这里p就是指针变量,他已将被传入了变量的地址。所以在输出地址的时候,结果是一样的。
  • “p的值就是i的地址”
int a[] = {0};
int *p = a;
——>p == &a[0]表达式的值是True
  • *号在这里作为单目运算符,表示要访问对应地址的变量。*p就是i,使用%d输出 i 的值。

在这里插入图片描述随后添加的代码 *p = 26;实际就是i = 26;

3.指针与数组

在这里插入图片描述

  • 实际上,在函数中传入的数组参数实际上就是指针变量。
  • void minmax(int a[], int len, int *min, int *max)中的 a[ ] 写成 *a 指针的形式完全没有问题,int sum(int *a);int sum(int a[]); 这两种作为函数原型的写法是等价的。尽管函数体内部仍然使用了数组a[ ]
  • 这就解释了为什么在函数参数那里不能使用sizeof()函数进行数组长度的计算
    在这里插入图片描述在这里插入图片描述
    数组其实 “可以被看做”是常量指针
  • 数组变量本身表达的是数组的起始地址,也就是第一个元素的地址;所以int *p = a; 等效于 int *p = &a[0];
  • 变量的地址——>变量
&a 表示数组a的初始地址(&号可以省略),即第一个元素的地址
&a[0] 表示数组第一个元素的地址
&a[1] 表示数组第二个元素的地址
  • 关于 指针[ ] 访问
int a[] = { 5,15,34,54,14,2,52,72 };
int* p = &a[5];
printf("%d", p[-2]);

代码中指针变量p指向了数组a的第6个数据:2,下一步执行p[-2]操作,是向前移动2个位置,即第4个数据:54。所以输出结果是54

int a[] = {5,15,34,54,14,2,52,72};
int *p = &a[1];
同理,p[2]的值是54
int a[] = {0};
int *p = a;
那么以下表达式的结果为真:
p == &a[0];//p的值就是a第一个数据的地址
*p == a[0];//指向第一个数据,*p就表示访问对应地址的数据
p[0] == a[0];//p[0]是数组的访问方式,表示访问数据后后移0个单位,还是原来*p那个数据

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

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

相关文章

亚信安慧AntDB开启超融合数据库新纪元

(一) 前言 据统计,在信息化时代的今天,人们一天所接触到的信息量,是古人一辈子所能接收到的信息量的总和。当今社会中除了信息量“多”以外,人们对信息处理的“效率”和“速度”的要求也越来越高。譬如&…

链表之“带头双向循环链表”

目录 ​编辑 1.链表的分类 2.带头双向循环链表的实现 1.创建结构体 2.创建返回链表的头节点 3.双向链表销毁 4.双向链表打印 5.双向链表尾插 6.双向链表尾删 7.双向链表头插 8.双向链表头删 9.双向链表查找 10.双向链表在pos的前面进行插入 11.双向链表删除pos位…

10.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作

内容参考于:易道云信息技术研究院VIP课 上一个内容:接管游戏连接服务器的操作 码云地址(master 分支):染指/titan 码云版本号:00820853d5492fa7b6e32407d46b5f9c01930ec6 代码下载地址,在 ti…

Java+SpringBoot+Vue+MySQL:狱内罪犯危险性评估系统全栈开发

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

智慧物流之道:数据可视化引领全局监控

在智慧物流的背景下,数据可视化催生了物流管理的全新范式。首先,通过数据可视化,物流企业可以实现对整个供应链的全景式监控。下面我就可以可视化从业者的角度,简单聊聊这个话题。 首先,图表和地图的直观展示使决策者能…

【Java EE初阶二十七】深入了解cookie

1. 简单了解cookie Cookie是http请求里header 中的一个属性,浏览器持久化存储数据的一种机制,网页无法访问主机的文件系统,要想存储数据就得通过其他的方式; 且cookie中保存的数据也是键值对的形式,最终还是要把这个键…

安装极狐GitLab Runner并测试使用

本文继【新版极狐安装配置详细版】之后继续 1. 添加官方极狐GitLab 仓库: 对于 RHEL/CentOS/Fedora: curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash2. 安装最新版本的极狐G…

【C++】树形关联式容器set、multiset、map和multimap的介绍与使用

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.关联式容器 2.键…

使用HTML5画布(Canvas)模拟图层(Layers)效果

使用HTML5画布(Canvas)模拟图层(Layers)效果 在图形处理和计算机图形学中,图层(Layers)是指将图像分成不同的可独立编辑、组合和控制的部分的技术或概念。每个图层都可以包含不同的图形元素、效…

Azure Eventhub项目引入Servicebus报NoClassDefFoundError

前提 现有项目使用azure eventhub作为IOT数据载体进行数据传输。由于业务需要&#xff0c;需要同时引入servicebus。 <dependency><groupId>com.azure</groupId><artifactId>azure-messaging-servicebus</artifactId><version>7.13.3<…

使用腾讯云go sdk 查询对象存储中最新文件

背景&#xff1a; 腾讯云账号下&#xff0c;有很多对象存储COS桶&#xff1a; 我现在想确认某一个对象存储桶的活跃程度&#xff0c;简单的来说。我想知道这个桶里面最后上传的一个文件是什么&#xff0c;以及它的上传时间戳。 本文将介绍如何使用腾讯云对象存储&#xff08;…

计讯物联5G RedCap网关TG463化繁为简,推动5G赋能千行百业

5G RedCap&#xff0c;全称为Reduced Capability&#xff0c;即在5G的基础上&#xff0c;对部分功能进行化繁为简后形成的新技术标准&#xff0c;故又称轻量化5G。作为高性价比下的精简技术&#xff0c;5G RedCap技术具备成本低、低功耗、兼顾5G等特点&#xff0c;能够在确保应…