什么是指针
- 指针就是一个变量,用来存放地址,地址唯一,标识一块内存空间。
- 指针的大小是固定的,32位平台是4个字节,64位平台是8个字节。
- 指针有类型。指针的类型决定了指针+ - 整数的步长和指针解引用操作的权限
- * 运算符叫间接操作符,也称为解引用操作符用来找出存储在地址中的值。*运算符后面跟着一个指针名或者地址时,*给出存储在指针所指向地址的值
打印的结果是*p与字符变量ch内的字符是相同的,ch的地址和指针p也是相同的,说明了ch的地址成功的赋值给了指针p,再继续将p内的字符改为B并且重新打印ch和*p,其中变量ch也变成了B字符说明将ch的地址赋值给p,我们可以对p进行操作从而来修改 变量ch。
- 指针的大小和步长
数组名是指针常量,在定义后,只要程序运行起来,系统就会为它分配一个连续的存储单元,每一个存储单元都是有确定的地址,而数组名就对应着那个连续的存储单元的首地址,这个是定值,也就是常量。指针的内容都是地址,即数组名是指针常量。
指针的步长和指针的大小这个问题很容易混淆,懂了之后就很容易。
首先创建了一个字符数组ch和整型数组arr,在分别将二者的地址给指针p和ptr,先打印出二者的地址。p+1,ptr+1后在对地址进行打印,发现指针p进行p+1操作后地址加了1但ptr进行ptr+1操作后地址加了4,这说明不同类型的指针的+1后地址偏移的字节数不同。但是p指针和ptr指针的大小是相同的,在32位平台下是4个字节。
不同类型的指针的步长可能不同
VScode中步长即为该类型的大小;
指针的大小:
地址打印出来后是010FFC03 这个每一位都是16进制,每两位为一个字节,一共有8位,即在32位平台下 地址都是八位16进制数,即指针的大小都是4个字节。