作业帮 > 综合 > 作业

请问 指针是指向地址的还是指向那个变量值的.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 11:38:47
请问 指针是指向地址的还是指向那个变量值的.
指针是一个变量,他的值是可以变得,他里面存的是一个地址
假设我们定义一个指针 int *p; int a;
如果p = &a;
这个时候我们知道,a是一个变量,那么内存必定要给他分配一个地址来存储他,p指向a的意思就是p里面存的就是a的地址.所以p就是一个存着地址的变量.
既然我们知道p里面存着a的地址,那么我们要找a就非常方便了,*p就表示p存的地址里面的值,也就是a的值.
这句话怎么理解呢?
1.p存的是地址,比作你住的地方,那么*p就表示你了,因为*p就表示这个地址里面的数据.
这个时候*p和a是完全一样的了,假如你要改变a的值.a = a+1和*p =*p+1是完全一样的,都能达到对a进行操作的目的.但是*p =*p+1和*p = *(p+1)是不一样的,这个用的时候要特别注意,因为p里面是地址,那么*(p+1)就表示这个地址加1后,地址加1那不就是换了一个地址吗?换了一个地址后里面存的就肯定不是a了,就像可能是你的邻居了.因为地址变了,所以就是p变了,因此*也变了,这个地方有点难理解,楼主多琢磨琢磨.
总结一句话:指针是一个万能钥匙,可以指向任何一个地址,可以改变任何一个地址里面的数据(只读的除外),因此使用指针要注意安全,以免发生异常.