当前位置: 首页 > news >正文

取值运算符*和地址运算符

在指针的学习中,必不可少的两个操作符:*和&。

在定义一个指针的时候,比如

short *p;

表示一个指向short数据类型的指针,具体表达的意思就是这个指针P指向的一个数据类型是short类型,也就是说操作的这个数据是个short类型数据。“*”表示的取值运算符,就是要获取指针指向的内存地址里面的数据。

p本身是一个内存地址值,通常说的指向某个地址,就是表示P的值就是这个地址,通过取值运算符(*),才能获取指向这个内存里面的数据值。

例如现在定义一个数组

unsigned char data[] = {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80};

数据在内存排列方式如下(小端模式):

0x10

0x20

0x30

0x40

0x50

0x60

0x70

0x80

  • 如果定义一个short类型(16位)指针

short *p = data;

printf("output value: %x\n", *p);

则打印输出为:

output value: 0x2010

  • 如果定义一个long类型(32位)指针

long *p = data;

printf("output value: %x\n", *p);

则打印输出为:

output value: 0x40302010

可以看出,指针P指向的内存地址都是同一个,但是随着指针指向的数据类型不同,通过取值运算符(*)获取的值也是不同的。

在数组data中,如果我想定义一个指针,指向第5个地址,就需要地址运算符

short *p = &data[4];

这个时候,指针P就直接指向data[4]这个数据的地址。

指针P是指向一个地址,那么如何获取一个变量的地址,就是靠地址运算符(&)。

总结起来,

取值运算符(*)表示获取这个指针指向的地址里面的数据值,

地址运算符(&)表示获取这个变量在内存的地址。

相关文章:

  • MYSQL初阶(暂为自用草稿)
  • [密码学基础]GM/T 0018-2023 密码设备应用接口规范深度解析:技术革新与开发者实践
  • 【测试文档】项目测试文档,测试管理规程,测试计划,测试文档模版,软件测试报告书(Word)
  • 使用C语言的cJSON中给JSON字符串添加转义
  • C++中chrono计时器的简单使用示例
  • MCP协议驱动的全自动光催化甲烷偶联实验平台构建及实现方案
  • 【论文推荐|深度学习,冰川测绘,遥感,青藏高原】SAU-Net: 基于多源遥感数据的冰川制图深度学习方法(二)
  • 每日定投40刀BTC(14)20250409 - 20250419
  • windows11安装jitsi-meet视频会议系统
  • 如何使用flatten函数在Terraform 中迭代嵌套map
  • 演讲比赛流程管理项目c++
  • 网络互连与互联网4
  • python基础知识点(3)
  • Lambda 表达式的语法结构
  • 20250419将405的机芯由4LANE的LVDS OUT配置为8LANE的步骤
  • 怎么查看LLM Transformer 架构进行并行计算和设备映射
  • Python基础总结(七)之条件语句
  • 多线程和线程同步
  • Pandas取代Excel?
  • 交换排序——快速排序
  • 日本长野一夜连震47次,当局呼吁警惕更大地震
  • 不降息就走人?特朗普试图开先例罢免美联储主席,有无胜算
  • 习近平圆满结束对柬埔寨国事访问
  • 夜读丨石头比月光温柔
  • 让观众从演唱会现场走到商场,上海虹口构建“票根经济”生态链
  • 国家统计局:3月全国城镇不包含在校生的16-24岁劳动力失业率降至16.5%