为了有效的使用计算机上的内存,就把内存划分成一个个小的内存单元,每个单元内存的大小是一个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
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;
}