指针 指针偏移 指针类型
在创建一个变量的时候,系统都会为其分配一个地址来证明它存在于内存之中。
指针就是一个很好的帮助你在内存中找到那些变量的工具。指针的内容一般都是来存这个变量的首地址的。
你可以对指针进行解引用来知道这个指针内容的内容。指针的内容为a的地址,a地址的内容为10
为什么会叫解引用呢?我的理解是:引用其实就是引用该变量的地址所以用取址符&来引用a,解引用就是把这个引用解除 *&a就会变成a,那解引用出来的就是a。这样对指针p进行解引用的话得出来的就是a这个解引用就是为指针而设计的。你可能会好奇那我直接 *&a岂不就是a,没错,&a你也可以看成是一个指针。*p把p展开也就是*&a。
那指针为什么会有char*类型指针 int*类型指针 void*类型指针呢?
其实定义什么类型的指针是为了告诉编译器以哪种方式类型来解引用获得真正的内容
这种就是不知道以哪种方式来解引用就会报错,如果定义错的类型来解引用也是可以骗过vs这个编译器的,但是最后解出来的内容就会根据你指针的类型来解。
这里我定义了一个struct结构体,也就是相当于我自己创建的一个类型。我用int*来接收没有用相应类型struct*接收,因为struct类型的前四个字节是int a ;指针指向的是temp的首地址,用int方式解出来就是a的值10,而不是整个结构体的内容。当你知道struct类型在内存中的地址顺序时候,你就可以通过指针偏移然后用相对应的指针类型来解出你想要的值。
所以定义指针的时候一定要与指向类型相对应,这样才能正确的解引用解出来。
指针偏移就是通过指针++ -- 或者+n -n的方式让它指向的位置进行移动。就像一个指针一样,本来指着这然后指着那。什么类型的指针偏移+1就是偏移一个这个类型的。
这里我改变了一下指针的类型,改成了char。char为1字节,那么+1就是向后偏移1个字节加4就是偏移4个字节,因为int是4字节所以我直接偏移了4个字节到了b的地址地方,再用相应类型的指针解引用就求出了e。其他可以依次类推。
指针 指针偏移 指针类型相关推荐
- C语言:指针的偏移步长、结构体成员的偏移量、嵌套结构体成员的偏移量、结构体的内存对齐
文章目录 1 不同类型指针的偏移步长 2 结构体成员的偏移量 3 嵌套结构体成员的偏移量 4 结构体的内存对齐 4.1 内存对齐的原因与优点 4.2 结构体内存对齐的规则 4.3 结构体嵌套结构体时的 ...
- Go基础:指针地址、指针类型、多重指针、指针运算
目录 到底什么是指针呢? 指针 指针地址和指针类型 指针取值 指针变量初始化 指针运算符 多重指针 指针运算 到底什么是指针呢? 内存就是一系列有序列号的存储单元,变量就是编译器为内存地址分配的昵称, ...
- 【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组类型* 定义数组指针 )
文章目录 总结 一.使用 数组类型* 定义数组指针 二.完整代码示例 总结 typedef int(ArrayType)[3];ArrayType *p = NULL; 一.使用 数组类型* 定义数组 ...
- C++中void和void*指针的含义 (指针类型的含义)
转载自:http://blog.csdn.net/lee_shuai 指针有两个属性:指向变量/对象的地址和长度,但是指针只存储地址,长度则取决于指针的类型:编译器根据指针的类型从指针指向的地址向后寻 ...
- 【二级指针--定义、初始化赋值、解引用;特殊指针--空指针、void类型的指针】(学习笔记12--指针下)
目录 一.二级指针 指针的指针 二级指针的定义 二级指针的初始化与赋值 二级指针的解引用 二级指针与指针数组 main函数的参数 二.特殊指针 空指针 void类型的指针 新星计划第六篇博文,下面是上 ...
- 指针大小为什么与类型无关?
指针大小为什么与类型无关? 因为它的大小与硬件有很大关系. 相信这个问题很多像我一样的新人都不知道.我们的内存中有各种各样的数据,整型.浮点型.字符型等等.这些数据在内存中占据不同大小的储存空间,故用 ...
- 如何理解CE中指针,多重指针,偏移的概念
今日重新回顾了一下以前使用过的ce修改器,在学过C语言之后感觉概念通透了许多. 为什么要用指针 CE寻找到的一些地址往往是一个动态地址,它是动态生成的(例如malloc函数),每次重启游戏后,它都会随 ...
- 对指针的详细认识(一)—— 指针概念+指针类型+野指针+指针运算+二级指针
文章目录 指针是什么? 指针的定义 指针的大小 指针类型 指针有哪些类型? 指针类型有什么意义? 野指针 野指针的成因 如何避免野指针 指针运算 指针+-整数 指针-指针 指针的关系运算 二级指针 指 ...
- 指针的类型和指针所指向的类型
从语法角度看,只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型,这是指针本身所具有的类型. int *ptr; int* char *ptr; char* int **ptr ...
- 指向指针数组的指针和指针数组类型的指针
目录 基本操作 指向指针数组的指针 指针数组类型的指针 基本操作 通常我们通过以下方式进行指针变量的定义: /* a pointer to unsigned char */ unsigned char ...
最新文章
- 技本功丨收藏!斜杠青年与你共探微信小程序云开发(上篇)
- Fletcher-Reevers Conjugate Descent和Steepest Descent两种算法中伪代码的区别
- Codeforces Round #712 (Div. 2)
- 客户端服务端防止用户重复提交表单
- 【代码升级】【iCore3 双核心板】例程二十八:FSMC实验——读写FPGA
- 开源大数据平台HBase对接OBS操作指南
- 短视频直播一对一源码“皇冠”花落谁家
- mysql did not start_mysql 服务无法启动
- 【Proteus仿真8086】将IO接口电路封装成子电路CCT001
- 三菱PLC定位控制1
- Nginx配置https及证书
- mysql 生日_MySQL数据库之MySql查询生日的两种方式
- 【智能车学习】FTM模块
- iscsi btrfs 扩容操作
- 小米路由器R3原厂BootLoader和eeprom备份
- 重装w11新硬盘,找不到硬盘
- HTML5用audio标签做一个最简单的音频播放器
- 梅西的命运才是真正的人生
- Week9 作业B - 东东学打牌 [计蒜客 - 41408]
- GreenSock引人注目的动画