指针解析 (*&p和&*p)

2023-11-14

p指向a:p的值是a的地址

*的作用:

  1. 定义   (int* p----定义一个int类型的指针变量)
  2. 取地址对应的数据  (*p---获取*下的值(p的值)对应的值,即*(0x1000)=5)  

*&p和&*p的区别:

  *&p:

  • &p:获取p的地址,即0x1008
  • *&p:即*(0x1008),获取地址0x1008对应的值,即*&p=0x1000

  &*p:

  •  *p: p的值(0x1000)对应的值,即*p=5
  •  &*p:取p的值对应的值的地址,即5的地址,即0x1000

这里的 * 称为指针运算符,用来取得某个地址上的数据,请看下面例子:

例1:

#include<stdio.h>

int main() {
	int a = 15;
	int *p = &a;   //定义指针变量
	printf("%d, %d\n", a, *p);
	return 0;
}
//运行结果:15,15

 

 例2:

#include<stdio.h>

int main() {
	int a = 15, b = 99, c = 222;
	int *p = &a;   //定义指针变量
	*p = b;	//通过指针变量修改内存上的数据
	c = *p;	//通过指针变量获取内存上的数据
	printf("%d, %d, %d, %d\n", a, b, c, *p);
	return 0;
}
//运行结果:99,99,99,99

通过指针交换两个变量的值:

#include<stdio.h>

int main() {
	int a = 100, b = 999, temp;
	int *pa = &a, *pb = &b;
	printf("%d, %d\n", a, b);

	/***开始交换***/
	temp =*pa   //将a的值先保存起来
	*pa =*pb   //将b的值交给a
	*pb = *temp   //再将保存起来的a的值交给b
	printf("%d, %d\n", a, b);
	return 0;
}
//运行结果:
a = 100, b = 999
a = 999, b = 100

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指针解析 (*&p和&*p) 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 程序员的自我修养(十二) -- Linux共享库

    共享库 从文件结构上来看 共享库和共享对象没什么区别 Linux下的共享库就是欧通的ELF共享对象 共享库的更新有两类 兼容更新 不兼容更新 版本命名 libname so x y z x 主版本号 库的重大升级 不同主版本号之间是不兼容的
  • 【高危】 Zoom Desktop Client for Windows <5.14.5 权限升级漏洞

    漏洞描述 Zoom 是一种用于视频会议 在线会议和远程协作的软件平台 Zoom Desktop Client for Windows 5 14 5 之前版本由于对数据的真实性验证不足 经过身份验证的攻击者可通过网络访将权限升级为 SYSTE
  • 核医学笔记-标准摄取值SUV计算

    SUV SUV值全称为标准摄取值 standard uptake value SUV 是pet在肿瘤诊断中常用的半定量指标 是指局部组织摄取的显像剂的放射性活度与全身平均注射活度 SUV 病灶的放射性浓度 kBq ml 注射剂量 MBq 体
  • Java五子棋详细步骤及完整代码

    五子棋 1 定义声明一个二维数组做棋盘 import java util Scanner public class Main public static void main String args 定义声明一个二维数组作为棋盘 int ga
  • c++primer 第十九章笔记 02运行时类型识别

    19 2 运行时类型识别 typeid运算符 用于返回表达式的类型 dynamic cast运算符 用于将基类的指针或引用安全地转换成派生类的指针或引用 将这两个运算符用于某种类型的指针或引用 当该类型含有虚函数 运算符将使用指针或引用所绑
  • sample函数—R语言

    简述 Sample函数从x的元素中提取指定大小的样本 使用替换或不替换 其使用格式为 sample函数 sample x size replace FALSE prob NULL 其中 x 一个可供选择的一个或多个元素的向量 或一个正整数
  • 用74LS165实现串口扩展并行输入口

    1 74LS165各个端口功能 SH RD 移位 装载数据 当为高电平时 在时钟信号下进行移位 当为低电平时 将并行输入口的数据送到寄存器中 CLK 时钟输入 A H 并行输入口 QH QH 串行输出口 GND 接地端 SER 串行输入口
  • SpringBoot 项目打包后获取不到resource下资源的解决

    SpringBoot 项目打包后获取不到resource下资源的解决 在项目中有几个文件需要下载 然后不想暴露真实路径 又没有CDN 便决定使用接口的方式来获取文件 最初的时候使用了传统的方法来获取文件路径 发现不行 查找资料后发现是Spr
  • Java垃圾回收(GC)机制

    一 为什么要垃圾回收 如果不进行垃圾回收 内存迟早都会被消耗空 因为我们在不断的分配内存空间而不进行回收 除非内存无限大 我们可以任性的分配而不回收 但是事实并非如此 所以 垃圾回收是必须的 哪些内存需要回收 哪些内存需要回收是垃圾回收机制
  • 亲密关系-【沟通日志】-如何不再重蹈覆辙

    大多数人会问 我要怎么克服眼前的困难 实际上应该问 哪些事已经做得很好 学会记录成长 就能固定成长 自我激励 过去的成功 会激发未来的成功 意识到自己已经走了多远 你才会更愿意继续去坚持 记录成长的工具 沟通日志 日期 年 日 每日记录 1
  • 2.Python数据分析项目——旅游景点票价预测

    1 总结 流程 具体操作 基本查看 查看缺失值 查看数值类型 预处理 缺失值处理 填充 拆分数据 获取有需要的值 统一数据格式 数据分析 groupby分组求最值数据 seaborn可视化 预测 RandomForestRegressor
  • vite简单介绍和配置整理

    vite简单介绍和配置整理 一 介绍 Vite 法语 快的意思 是一个HTTP服务器 特殊的地方 可以在单文件中书写ES6语法 支持热更新 请求的内容才会被打包 更新 Rollup打包 二 配置 总的配置 import defineConf
  • MySQL 8.0 密码策略修改

    首次登录mysql 需要修改原始密码 mysql gt show databases ERROR 1820 HY000 You must reset your password using ALTER USER statement befo
  • Ground Rules

    Ground Rules 1 Ground rules ground ra nd n 地面 土 土地 土壤 v 触海底 使停飞 阻止 起飞 罚 儿童 不准出去玩 adj 磨细的 剁碎的 rule ru l n 规则 统治 控制 管理 v 统
  • C语言:getchar( ) 函数详解

    文章目录 一 getchar 函数定义 二 函数返回值 三 注意区分 getchar 和 scanf 四 getchar 的使用实例 一 getchar 函数定义 getchar 字符输入函数 没有参数 从输入缓冲区里面读取一个字符 一次只
  • 解决EasyExcel导出文件LocalDateTime报错问题

    文章目录 问题引出 解决方案 自定义Converter 引用 LocalDateTimeConverter 搞定收工 问题引出 狗子我在参与一个项目的时候接触到数据表格导出为Excel表格的需求 但是在导出的时候会出现报错 Cannot f
  • 代码走查和代码审查_代码审查是个好主意的其他原因

    代码走查和代码审查 什么是代码审查 What are Code Reviews A Code Review is essentially what it sounds like a review of code before it is a
  • 虚拟机由于电脑未正常关机打不开问题-两种情况

    虚拟机由于电脑未正常关机打不开问题 我来总结我遇到的两种情况 文章目录 虚拟机由于电脑未正常关机打不开问题 第一种情况 报错 锁定文件失败 第二种情况 报错 指定的虚拟磁盘需要进行修复 第一种情况 报错 锁定文件失败 如果出现锁定文件失败
  • Unity自动创建脚本及预制体并绑定

    自己写了一套流程控制的框架 根据不同的状态执行不同的命令 每个状态判断和命令都是一个场景中的物体 不想每次重复同样的操作 创建脚本再创建预制体再绑定脚本 所以尝试写了一个自动创建脚本与预制体的工具 StateMachineEditorUti
  • 指针解析 (*&p和&*p)

    p指向a p的值是a的地址 的作用 定义 int p 定义一个int类型的指针变量 取地址对应的数据 p 获取 下的值 p的值 对应的值 即 0x1000 5 p和 p的区别 p p 获取p的地址 即0x1008 p 即 0x1008 获取