本篇是个人初学c时,对指针的个人理解,如有错误,还望指正。
关于指针
“&”:取数据存储的地址
指针:指向内存地址的数据类型
二者值均为地址
对于一个指针的声明
声明指针之后,
p为指针,其值是一个地址,*p表示取出地址p中所存储的值
这里表示取值的“*”是一个单目运算符
Ps:
-
对数组a[10],共有10个存储空间,其数组名a值为首地址,即a[0]的地址。
但a无法作为指针使用,a++等操作无效 -
对于指针p的加减操作,并非对应数值的直接加减变化。
例如,p=p+1;并非p所指向的地址值+1,而是向后移动1个存储单位
以int *p;为例
p+1: p指向的地址+4;得到p1
p-1: p指向的地址-4;得到p2
而值0、2、4并未发生改变。