文章目录

  • 总结
  • Intro
  • Code
  • 图示

总结

众所周知,内存可以看成一个一个相邻的格子(类比Excel),而数据就存储于这些格子之中(size大的变量占用格子数多,size小就占用小)。而每个格子都有自己的地址,即内存地址(类似于一条街上相邻的房间都有自己的门牌号,餐厅相邻的包厢也有自己的编号)。

  • 什么是指针变量?指针变量是一类特殊的变量,它用于存储的值是什么?是一个内存地址,是某个变量的内存地址
  • 给你一个变量名,如何获取该变量所在的内存地址?要用到取地址符&。举例:int age = 25;&age就可以取到age变量的地址。
  • 给你一个指针变量,如何得到该指针指向的变量的值? 格式:*指针变量即可。

Intro

C语言中有一类特殊的变量:指针变量(pointer variable),用于存储某个变量的内存地址的值
要打印指针变量一般用%p格式符,会打印出该指针变量的值,即一个内存值。

Code

//  Created by wuyujin1997 on 2023/1/23.
#include <stdio.h>int main() {int age = 25;int* p = &age;printf("age = %d\n", age);  // 打印一个int变量的值printf("&age = %p\n", &age);// 该变量的内存地址。 【&变量名】取到该变所在的内存地址printf("p = %x\n", p);      // 打印该指针变量的值。指针变量中存的是特殊类型的值:【某个其他变量的内存地址】。printf("*p = %d\n", *p);    // 指针变量p中存着一个内存地址,这个内存地址处的变量的值是多少?// 【*指针变量名  指针变量-->普通变量内存地址-->普通变量的值 】依次取值两次:1. 拿到指针变量中存储的值。2. 以该值为内存地址,取对应内存处的变量的//    age = 25
//    &age = 0x16fdff218
//    p = 6fdff218
//    *p = 25return 0;
}

图示

想了一下,用 Excel 演示最方便,也比较直观。
假设我用下面的电子表格表示我电脑的内存,其中每个格子就是一个内存单元(假设用每个格子表示1字节,1格子=1字节内存 byte)。

那我的每条程序语句依次都做了什么呢?

  1. int age = 25;

声明了一个int型变量,一个int型变量占用4字节,所以在内存空闲处分配4字节的内存,将值25 写入该段内存。
本次程序运行时,该段内存地址为0x16fdff218

  1. int* p = &age;

声明了一个指针变量(用于存储内存地址值,所以指针变量一般都占8字节)
这个变量存储的值是什么呢?是之前的age变量内存地址
至于本次的指针变量存放于内存的何处(内存地址),不重要,从值也是一个符合规范的随机位置。

  1. printf("age = %d\n", age);

int型变量 age 的值是多少?25

  1. printf("&age = %p\n", &age);

int型变量 age 的内存地址是多少?0x16fdff218

  1. printf("p = %x\n", p);

打印指针变量 p 的值,就是为指针变量 p 分配的那8个字节里存储的值,也即变量 age 的内存地址

  1. printf("*p = %d\n", *p);

给你一个指针变量名,如何获取该指针变量指向的变量的值*p

C语言中 指针变量 取地址符的用法 *指针变量名的用法相关推荐

  1. C语言加取址符的作用,C语言中指针和取地址符的关系

    一 概念定义: 严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址. 指针原理: 其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放 ...

  2. c语言地址符作用,C语言中指针和取地址符的关系

    一 概念定义: 严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址. 指针原理: 其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放 ...

  3. c语言函数变量地址符,C语言中取地址符做函数形参?—— 引用的讨论

    取地址符&做函数形参? C语言强大且危险 引入 这个问题花去了整整一天的研究. 先看一段严蔚敏的<数据结构>中栈的例程: 这里面的&S第一遍看的时候想当然的认为是取了SqS ...

  4. 取地址符和解引用符的区别_(&)和解引用(*)运算符的地址以及C中的指针...

    取地址符和解引用符的区别 Here, we are discussing about the two most useful operators with the pointers, why and ...

  5. 【重温经典C语言】~c语言中%x、%c、%d、%x等等等、c语言取地址符的作用、C语言中的 联合体

    本章目录: 1. c语言中%x.%c.%d.%x等等等 2. c语言取地址符&的作用 3. 了解 C语言中的 联合体 3.1 什么是联合体? 3.2 定义 3.2.1 举例 3.3 初始化联合 ...

  6. 对指针变量取地址_C语言指针简介(amp;和*运算符)

    取地址符(&) 和  取值符(*) (1)& 运算符 :用于取一个对象的地址 例如:int *p;    p = &c;    将c的地址赋值给指针变量p,我们称p为 &quo ...

  7. 变量与指针、取值符与取地址符

    变量与指针.取值符与取地址符 一.基础知识 二.实例 其他 by HPC_ZY 也是偶然,在一个项目中需要多次交换二维数组中的值,逐个操作确实耗时,就想能不能利用指针操作快速交换.成功后写此文,记录分 ...

  8. golang中new、make及取地址符()

    new简介及使用方式 new() 用于返回类型指针,这个操作:分两步,第一步:初始化一个变量为零的值,第二步:生成一个指向类型变量的地址. &Type 返回类型变量的地址,这个操作:分两步,第 ...

  9. C语言 什么时候用取地址什么时候不用取地址,符号讲解

    情况一: &是一个取地址运算符 &a是一个表达式,其功能是求变量a的地址 scanf函数的一般形式为:scanf("格式控制字符串",地址列表); scanf输入的 ...

最新文章

  1. Linux distributions —— 可安全安装套件,Linux发布商套件
  2. 系统优化怎么做-SQL优化
  3. 8、Java Swing JCheckBox:复选框组件
  4. matlab 邵玉斌,matlab 清华大学出版社 邵玉斌编写的《通信系统建模与仿真实例分析》一书的所有MATLAB和SIMULINK代码 - 下载 - 搜珍网...
  5. linux+dd模式,Linux命令之dd详解
  6. 微軟平台的管理專家 - Microsoft Operations Manager (MOM)
  7. 算法设计与分析——贪心算法——汽车加油问题
  8. 深入剖析 linux GCC 4.4 的 STL string
  9. 一个学单片机的不错网站
  10. 华为云各行业数据库服务整体解决方案、数据库迁移上云解决方案
  11. MATLAB中saveas函数使用
  12. sqlplus登录\连接命令、sqlplus命令的使用大全
  13. C++实现简单读取Obj格式文件
  14. 知识图谱或成AI发展重点,投研数据整理耗时可从一周缩至一分钟
  15. 常用的PHP加密方式
  16. matlab的subplot--子图位置大小随心所欲
  17. mysql创建前缀索引
  18. 2019年Android开发的未来发展方向该如何走?
  19. 解决github.io 连接不安全,无法访问
  20. echarts 常见的功能点小结

热门文章

  1. tomcat官方下载(历史版本,旧版本)
  2. Labview LabSQL下载
  3. 打开Flutter动画的另一种姿势——Flare,android面试题选择题
  4. Mac安装软件时提示“文件已损坏,您应该将它移到废纸篓”解决办法(亲测有效)
  5. mac运行.py提示缺少模块的解决方法
  6. vue中动态获取dom元素进行操作
  7. Jmeter 中断言操作
  8. VS Code配置matlab
  9. [读书笔记]多线程学习笔记
  10. ffmpeg 之 RTSP 一