【C 语言】指针 Three 之 [赋值语句的方法、指针变量的大小、上述总结、 * 和 & 认识、对解引用 (*) 认识]
🚩write in front🚩
🔎Hello,大家好我是泽 En,一起共同学习,多多指教(●'◡'●)🔎
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🖊
📢2021 年度博客之星物联网与嵌入式开发 TOP5,2021 博客之星 Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]
💣赋值语句的方法
如下代码所示↓
不允许把一个数赋予指针变量,故下面的赋值是错误的。
被赋值的指针变量前不能再加“*”说明符,如写为 *p=&a 也是错误的。
另外,指针变量和一般变量一样,存放在它们之中的值是可以改变的,也就是说可以改变它们的指向。
🗡指针变量的大小
如下代码所示↓
运行结果🖊
④(全部)
从上述结果可以看出指针变量都是④个字节。
为什么不同类型的变量的地址所占的字节数都是一样的呢。
原因是:他们数据类型都是指针类型,切记(☆-v-)
🔥注意→这个是在 32 位的操作系统 = 4 字节,64 位的操作系统上 = 8 字节。
⚔ 上述总结
指针就是变量,用来存放地址的变量。(存放在指针当中的值都是会被当做是地址来处理)
还有下列②个问题如下↓
一个小的单元到底是多大(①个字节)
如何进行编址。
经过仔细的计算,一个字节(⑧比特位)对应其一个地址是比较合适的(①字节等于①地址)
指针就是用来存储地址的,地址是唯一表示一块地址空间。
指针大小在 32 位的平台上是④个字节,在 64 位上的平台是⑧个字节。
在 32 位平台上产生的地址线就是由 32 个 0&1 组成的地址线,在 64 位平台上产生的地址线就是由 64 个二进制 0&1 组成的地址线。
💣 * 和 & 认识
假设有一个 int 类型的变量 a,pa 是指向它的指针,那么
*&a
和&*pa
分别是什么意思呢?
*&a
可以理解为*(&a)
,&a
表示取变量 a 的地址(等价于 pa),*(&a)
表示取这个地址上的数据(等价于 *pa),绕来绕去,又回到了原点,*&a
仍然等价于 a
&*pa
可以理解为&(*pa)
,*pa
表示取得 pa 指向的数据(等价于 a),&(*pa)
表示数据的地址(等价于 &a),所以&*pa
等价于 pa
💣
表示乘法,例如
int a = 3, b = 5, c; c = a * b;
这是最容易理解的。表示定义一个指针变量,以和普通变量区分开,例如
int a = 100; int *p = &a;
表示获取指针指向的数据,是一种间接操作,例如
int a, b, *p = &a; *p = 100; b = *p;
表示获取指针指向的数据,是一种间接操作。这里我来举出一个代码例子↓
运行结果🖊
这里大家可以好好思考下为什么,为什么运行结果是这样看看能不能说出来。这样你才能真正的掌握这些知识点。
版权声明: 本文为 InfoQ 作者【泽En】的原创文章。
原文链接:【http://xie.infoq.cn/article/4d6c21bdaccfee195a08c33d4】。文章转载请联系作者。
评论