浅谈指针
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
假设这就是一块内存空间。
下面小的格子被称为内存单元->编号(地址)
虚拟地址
CPU会直接生成虚拟地址->直接经过地址线的传递->电信号(它其实就是我们的地址)
高电频就是1,低电频为0;
计算机上会有32位虚拟地址空间/64位虚拟地址空间
当我们是32位虚拟地址空间,传递过来生成的地址是32位
当我们是64位虚拟地址空间,传递过来生成的地址是64位
32位的地址经过地址线的传递它的二进制序列
00000000000000000000000000000000
00000000000000000000000000000001
……
11111111111111111111111111111111
总共有2^32种序列
通过地址最后去转换去寻找内存中的某个单元
虚拟地址的生成最终还是会转化为物理地址
如果我们能够生成一块地址地址还能找到一块内存单元,那么我们的访问是不是就特别方便呢。
a 占四个字节,就在内存条开辟四个字节大小的空间
每个字节都有编号,那a的真正地址到底是谁
F10调出监控查看地址
这是查看内存的方法
10的二进制序列 1010
a是一个整型,他的二进制位要放在32位里面去看
0000 0000 0000 0000 0000 0000 0000 1010(代表在32位系统下的10)
四个二进制位可以写成一个16进制
00 00 00 0a(10在16进制中就是a)
倒着看就是0a 00 00 00
内存中的每一个字节都有地址
取出a的地址是四个字节的第一个地址
//内存单元有编号(地址/指针){编号,地址,指针这三个其实是一个意思}
int main()
{
int a = 10;
//&a;//取地址我们拿到的就是一个地址
//10要存起来,我们把10给了a,
//把地址放到pa里面
int* pa = &a;//* 告诉我们pa是指针,int告诉我们pa指向的a是整型类型
//pa被称为指针变量
return 0;
}
指针的储存也会在内存条上开辟一块空间,来储存
*pa;//*是解引用符它就是a
*pa = 20;
printf("%d", a);
这时候a就变成了20
总之指针变量是用来存放地址的一种变量
- 内存会被划分成小的内存单元,一个内存单元的大小是一个字节(这里还未普及内存四区的知识,后面会讲)
- 每个内存单元都有编号,这个编号也被成为:地址/指针
- 地址/指针就可以 存放一个变量中,这个变量被称为指针变量
- 通过指针变量中储存的地址,就能找到指针指向的空间
浅谈指针
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
假设这就是一块内存空间。
下面小的格子被称为内存单元->编号(地址)
虚拟地址
CPU会直接生成虚拟地址->直接经过地址线的传递->电信号(它其实就是我们的地址)
高电频就是1,低电频为0;
计算机上会有32位虚拟地址空间/64位虚拟地址空间
当我们是32位虚拟地址空间,传递过来生成的地址是32位
当我们是64位虚拟地址空间,传递过来生成的地址是64位
32位的地址经过地址线的传递它的二进制序列
00000000000000000000000000000000
00000000000000000000000000000001
……
11111111111111111111111111111111
总共有2^32种序列
通过地址最后去转换去寻找内存中的某个单元
虚拟地址的生成最终还是会转化为物理地址
如果我们能够生成一块地址地址还能找到一块内存单元,那么我们的访问是不是就特别方便呢。
a 占四个字节,就在内存条开辟四个字节大小的空间
每个字节都有编号,那a的真正地址到底是谁
F10调出监控查看地址
这是查看内存的方法
10的二进制序列 1010
a是一个整型,他的二进制位要放在32位里面去看
0000 0000 0000 0000 0000 0000 0000 1010(代表在32位系统下的10)
四个二进制位可以写成一个16进制
00 00 00 0a(10在16进制中就是a)
倒着看就是0a 00 00 00
内存中的每一个字节都有地址
取出a的地址是四个字节的第一个地址
//内存单元有编号(地址/指针){编号,地址,指针这三个其实是一个意思}
int main()
{
int a = 10;
//&a;//取地址我们拿到的就是一个地址
//10要存起来,我们把10给了a,
//把地址放到pa里面
int* pa = &a;//* 告诉我们pa是指针,int告诉我们pa指向的a是整型类型
//pa被称为指针变量
return 0;
}
指针的储存也会在内存条上开辟一块空间,来储存
*pa;//*是解引用符它就是a
*pa = 20;
printf("%d", a);
这时候a就变成了20
总之指针变量是用来存放地址的一种变量
内存会被划分成小的内存单元,一个内存单元的大小是一个字节(这里还未普及内存四区的知识,后面会讲)
- 每个内存单元都有编号,这个编号也被成为:地址/指针
- 地址/指针就可以 存放一个变量中,这个变量被称为指针变量
- 通过指针变量中储存的地址,就能找到指针指向的空间