初识指针
内存
内存是计算机的重要的存储器,计算机中所有程序的运行都在内存中进行。
使用计算机时,将内存分为多个小的空间,进行高效的管理和使用。
- 内存的编号
常用计算机有32位的、有64位的。以32位举例。
32位是指有32根地址线,地址线是物理层面的线,可通正负电,正电为1,负电为0。电信号转换为数字信号,形成0和1组成的二进制序列。
32个二进制位,每一位是0或1,会2的三十二次方种组合,如
00000000000000000000000000000000(32个0)
......
11111111111111111111111111111111(32个1)
这样的每一个内存单元给一个这样的地址,也是内存单元编号。
另:一个内存单元为一个字节(1 byte)
%p可以打印地址
指针是内存地址,指针变量是用来存放内存地址的变量
示例:
int main()
{
int a=10;
printf(“%p\n”,&a);
int * pa=&a;
retuern 0;
}
ps:
1.printf打印出a的地址,a是int整型,所以在内存中占四个字节。
2.pa是用来存放地址的,这里的pa叫做指针变量。(pa只是变量名称)
3.* 使用来说明pa是指针变量。
4.int说明pa执行的对象是int类型的。
5.指针可以存放自己的地址(套娃了属于是),当然也说明指针变量是有自己的地址的。
6.可以通过调试--窗口--内存,查看内存地址(地址后面位数编号为十六进制)
指针使用的意义/作用
int main()
{
int a=10;
int * pa=&a;
*pa =20;
pintf(“%d\n”,a);
return 0;
}
蓝字*是解引用操作,因为pa是指针变量,存了a的地址,蓝字*pa就是通过pa里的地址找到a。是一种间接的改变,借助于pa去改变a的量。
可以用printf打印出各个数据类型中指针所占内存大小,有4字节,有8字节。(不同位数的计算机显示的不一样,编译器设置可以改变是64位(x64)还是32位(x86))32位 -32bit-4字节,64位-64bit-8字节。
指针是用来存地址的,所以指针所占的空间取决于地址所占的空间。
本次只是初步的认识了解指针,之后会有详细的学习内容。