C语言 指针与内存之间的关系

一、内存与字节

一个内存单元==一个字节==一个地址
整型 int 类型中int类型的字节数是4 且一个字节表示八个bite位 一个二进制数位有着32个bite
所以又可以表示为:一个字节 == 8个比特位 == 32位数的二进制数位的八分之一 

例如: int  a = 10;

该表达式表达的意思:向内存申请4个字节,用于存放数字10 

—— 就是把10的32位二进制数位分为了四份,一份八位比特位 

而四份,有不同的地址,而我们将地址位最低的哪一个地址,作为首地址使用。

而 & 作为取地址符号的时候 &a 就表示取a在内存中存放的地址 中的首地址  ,这和数组中的数组名一个意思,首地址可以代表a在内存中的所处空间位置。

二、内存与指针

int * p = & a

首先,我们想要把 &a存放到一个变量p中,而p也因此被称之位指针变量

而p的类型 则是 int *

而 * 则是说明 p是一个指针变量   ——   一个证明

int 表示的是 p 所指向的地址 &a 中 a 的一个类型  

int * 又表示了 指针变量 p的类型

*p表示的是一种指向,通过p中存放的地址,找到地址指向的空间 *p就是变量a

p是存储指向内容的地址,是一个地址编号

如图所示,指针变量 p 中存放的其实是&a 也就是一个地址的编号,而这个地址编号又引导着指针变量p指向这个地址编号所表示的空间

就是相当于 指针变量p(*p)就是 变量a 

所以当指针变量p(*p)发生改变时,变量a也会随之而改变

例如 : *p = 0  相当于  a = 0;

猜你喜欢

转载自blog.csdn.net/2301_76445610/article/details/132167488