一、知识学习
1.指针初识
(1)了解内存:内存是一块大的区域,内存可以划分为一个一个小的内存单元,每个内存单元的大小是一个字节(1byte),每个内存单元对它进行地址编号
类比生活中的房间:房间(内存单元)→编号(地址)
(2)地址编号的来源:
虚拟地址:CPU直接生成,经过地址线的传递,传递出电信号,电信号就是地址,地址线上的编号就是地址
计算机上有32位或者64位虚拟地址空间,当有32位的虚拟地址空间的时候传递过来的就是32位的地址,00000000000000000000000000000000......
生成2^32个空间就是物理地址
(3)取内存中的地址的时候取出的是四个字节中第一个字节的地址
(4)总结一下:
<1> 内存会被划分为小的内存单元,一个内存单元的大小是1个字节
<2> 每个内存单元都有编号,这个编号也被称为:地址/指针
<3> 地址/指针就可以存放在一个变量中,这个变量被称谓指针变量
<4> 通过指针变量中存储的地址,就能找到指针指向的空间
int main()
{
int a = 10;
int* p = &a;//取a的地址
*p = 20;//解引用操作符*——对a进行操作
printf("%d\n", a);//20
printf("%d\n",*p);//20
return 0;
}
(5)指针变量的大小:取决于地址存放所需的空间,就是地址的大小。
指针大小在32位平台是4个字节,在64位平台是8个字节。