C语言中 指针变量 取地址符的用法 *指针变量名的用法
文章目录
- 总结
- 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)。
那我的每条程序语句依次都做了什么呢?
int age = 25;
声明了一个int型变量,一个int型变量占用4字节,所以在内存空闲处分配4字节的内存,将值25
写入该段内存。
本次程序运行时,该段内存地址为0x16fdff218
int* p = &age;
声明了一个指针变量(用于存储内存地址值,所以指针变量一般都占8字节)
这个变量存储的值是什么呢?是之前的age
变量内存地址
。
至于本次的指针变量存放于内存的何处(内存地址),不重要,从值也是一个符合规范的随机位置。
printf("age = %d\n", age);
int型变量 age 的值是多少?25
printf("&age = %p\n", &age);
int型变量 age 的内存地址是多少?0x16fdff218
printf("p = %x\n", p);
打印指针变量 p 的值,就是为指针变量 p 分配的那8个字节里存储的值,也即变量 age 的内存地址。
printf("*p = %d\n", *p);
给你一个指针变量名,如何获取该指针变量指向的变量的值?*p
C语言中 指针变量 取地址符的用法 *指针变量名的用法相关推荐
- C语言加取址符的作用,C语言中指针和取地址符的关系
一 概念定义: 严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址. 指针原理: 其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放 ...
- c语言地址符作用,C语言中指针和取地址符的关系
一 概念定义: 严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址. 指针原理: 其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放 ...
- c语言函数变量地址符,C语言中取地址符做函数形参?—— 引用的讨论
取地址符&做函数形参? C语言强大且危险 引入 这个问题花去了整整一天的研究. 先看一段严蔚敏的<数据结构>中栈的例程: 这里面的&S第一遍看的时候想当然的认为是取了SqS ...
- 取地址符和解引用符的区别_(&)和解引用(*)运算符的地址以及C中的指针...
取地址符和解引用符的区别 Here, we are discussing about the two most useful operators with the pointers, why and ...
- 【重温经典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 初始化联合 ...
- 对指针变量取地址_C语言指针简介(amp;和*运算符)
取地址符(&) 和 取值符(*) (1)& 运算符 :用于取一个对象的地址 例如:int *p; p = &c; 将c的地址赋值给指针变量p,我们称p为 &quo ...
- 变量与指针、取值符与取地址符
变量与指针.取值符与取地址符 一.基础知识 二.实例 其他 by HPC_ZY 也是偶然,在一个项目中需要多次交换二维数组中的值,逐个操作确实耗时,就想能不能利用指针操作快速交换.成功后写此文,记录分 ...
- golang中new、make及取地址符()
new简介及使用方式 new() 用于返回类型指针,这个操作:分两步,第一步:初始化一个变量为零的值,第二步:生成一个指向类型变量的地址. &Type 返回类型变量的地址,这个操作:分两步,第 ...
- C语言 什么时候用取地址什么时候不用取地址,符号讲解
情况一: &是一个取地址运算符 &a是一个表达式,其功能是求变量a的地址 scanf函数的一般形式为:scanf("格式控制字符串",地址列表); scanf输入的 ...
最新文章
- Linux distributions —— 可安全安装套件,Linux发布商套件
- 系统优化怎么做-SQL优化
- 8、Java Swing JCheckBox:复选框组件
- matlab 邵玉斌,matlab 清华大学出版社 邵玉斌编写的《通信系统建模与仿真实例分析》一书的所有MATLAB和SIMULINK代码 - 下载 - 搜珍网...
- linux+dd模式,Linux命令之dd详解
- 微軟平台的管理專家 - Microsoft Operations Manager (MOM)
- 算法设计与分析——贪心算法——汽车加油问题
- 深入剖析 linux GCC 4.4 的 STL string
- 一个学单片机的不错网站
- 华为云各行业数据库服务整体解决方案、数据库迁移上云解决方案
- MATLAB中saveas函数使用
- sqlplus登录\连接命令、sqlplus命令的使用大全
- C++实现简单读取Obj格式文件
- 知识图谱或成AI发展重点,投研数据整理耗时可从一周缩至一分钟
- 常用的PHP加密方式
- matlab的subplot--子图位置大小随心所欲
- mysql创建前缀索引
- 2019年Android开发的未来发展方向该如何走?
- 解决github.io 连接不安全,无法访问
- echarts 常见的功能点小结