指针和地址

1.内存

计算机中的程序都是在内存中运行的,内存被划分成小的内存单元,每个内存单元的大小是一个字节(Byte)。类似于酒店编号的一个个房间,方便快速查找定位,内存单元的编号就是地址,C语言中,地址也叫指针

(1)为什么一个内存单元的大小选择字节?

指针和地址_第1张图片

 如果选择bit(偏小),一个字符就占用8个内存单元,浪费

如果选择KB(偏大),一个字符分配1024个内存单元,只用了一个内存单元,浪费1023个内存单元

(2)地址或者编号如何产生

指针和地址_第2张图片

计算机上,有物理的地址线(电线),上有高低电平信号:1/0

例如 32位机器,有32根地址线,能组合出2^32个电信号(编号),每个编号对应一个内存单元(通过编号能访问内存单元),一共可以管理2^32个字节即4GB空间。 

(3)监视内存/地址

指针和地址_第3张图片

 指针和地址_第4张图片

指针和地址_第5张图片

申请一块空间来存放15,15为int类型,大小为4byte(字节),所以申请4个内存单元来存放。

地址和内存单元中的数值2进制转换为16进制,更方便。

4个二进制位转换为一个16进制位,  a=00000000 00000000 00000000 00001111(2进制)~0x 00 00 0f(16进制),逆位存放在内存单元中。

(4)取地址

%p专门用来打印16进制的地址

指针和地址_第6张图片

 (5)指针变量

存放指针的变量成为指针变量。

存放指针指针和地址_第7张图片

*pa是通过pa里存放的地址找到a

*pa=a,修改*pa就是修改a

指针==地址==编号

double类型的地址放在double类型的指针中

指针和地址_第8张图片

 指针的形象比喻:“通过路牌找厕所”

指针和地址_第9张图片

 指针变量的大小

指针和地址_第10张图片

32位: 指针和地址_第11张图片

64位: 指针和地址_第12张图片

 警告

解决办法:%zd 

结构体的访问

指针和地址_第13张图片

 

你可能感兴趣的:(jvm)