为了有效的使用计算机上的内存,就把内存划分成一个个小的内存单元,每个单元内存的大小是一个字节。

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

 

32位:有32根地址线/数据线

通电既产生正负电,用1表示正电,0表示负电

产生的结果:

00000000000000000000000000000000

.......

11111111111111111111111111111111

可以产生2^32种结果,这就是二进制,也可用此来表示内存的地址编号,大小为2^32 / 8 /1024/1024 = 512M = 0.5G

 

#include <stdio.h>

int main()

{

int a = 10;                      // 向内存申请4个字节的空间

int* p = &a;                   // 有一种变量是用来存放地址的——指针变量——int*

printf("%p\n", &a);        // %p以地址的形式打印,&a叫做取地址符,可以看到地址的编号,是十六进制的形式

return 0;

}

 

#include <stdio.h>

int main()

{

double d = 3.14;

double* pd = &d;

*pd = 5.5;

printf("%lf\n", d);            // 返回结果5.500000

printf("%lf\n", *pd);        // 返回结果5.500000

return 0;

}

 

#include <stdio.h>

int main()

{

double d = 3.14;

double* pd = &d;          

printf("%d\n", sizeof(pd));           // 32位操作系统下是4个字节——64位操作系统是8个字节

printf("%d\n", sizeof(char*));       //4

printf("%d\n", sizeof(short*));     // 4

printf("%d\n", sizeof(int*));         // 4

printf("%d\n", sizeof(double*));  // 4    

                                                   // 不管是什么样的指针类型,它的大小都是一样的

return 0;

}