目录
内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地 址。
1.内存是怎么编号的
32位——32根地址线——物理线——通电——1表示正电,0表示负电
电信号转换为数字信息:由1和0组成的二进制序列
2.一个内存单元是多少空间
假设:一个内存单元是1bit——32位就是2^32bit——0.5GB
实际中:一个内存单元是一个字节,然后分配地址
指针
观察:调试F10+窗口选项——内存 &a
&a——取出的是取出的是第一个字节的地址(较小的地址)
显示第一个字节地址:0x012FF8B4 0a 00 00 00
B5 B6 B7
为什么0a是一个字节?
0a是2个16进制数,可以转成8个2进制数,因此为一个字节
地址存储,需要定义指针变量
#include <stdio.h>
//指针就是地址
int main()
{
int a = 10;//a在内存中要分配空间——4个字节
printf("%p\n", &a);//%p打印地址
int* pa = &a;//pa是用来存放地址的,在C语言中是指针变量
//* 说明pa是指针变量
//int说明pa执行的对象是int类型的
*pa = 20;//*解引用操作,*pa通过pa里面的地址,找到a
printf("%d\n", a);
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(long*));
return 0;
}
指针变量的大小——指针的大小是相同的
注:指针是用来存放地址的——指针需要多大的空间,取决于地址的存储需要多大空间(地址长度)
指针的大小对应地址线的多少
32位——32bit——4byte 64位——64bit——8byte