学习指针遇到的问题

第一个问题:

 

上边这个图中打印出来的ptr1的地址和&ptr1的地址分别是什么的地址?

我理解的ptr1的地址就是ptr1这个指针变量自己的地址,&ptr1的地址就是ptr1这个指针指向的地址,也就是这个程序中urn这个字符数组的首地址,是这样吗?

如果我的理解是正确的话,是不是就是代表ptr1 = urn;这句话把urn的地址赋给指针ptr1就可以理解为,ptr1这个指针本身的地址不变,ptr1这个指针指向urn的首地址。

第二个问题:

在书中讲const关键字的时候提到了const关键字在指针变量之前时,指针p是可以改变的,指针所指向的内容是不可改变的。比如:

1 int const a = 100;
2 
3 cons tint *p;
4 
5 p = &a;

这里指的指针所指向的内容不可变是指p的类型不可变,只能是整数型还是指a的值不能变?我编程调试的时候发现a的值是可变的,所以是不是这里指的内容不可变指的就是内容的类型不可变。

 

第三个问题:

在书中讲const关键字的时候提到了const关键字在指针变量的定义之中,指针p的值不能改变,指的是指针只能指向某个地址不能改变吗?如果是这样的话(看下面的代码),p就是只能指向a的地址不能再改变了吗?那这样的话是不是改变a的值再打印*p的值就是已经修改过的a的值。

1 int a = 100;
2 int * const p = &a;

指针这一块的知识之前基本为零,所以这两天看的很吃力,进度有点慢,希望老师给解答一下,然后你看看指针这一块有没有什么需要注意的,需要特别注意去学习的地方跟我说一下。

原文地址:https://www.cnblogs.com/Mr--Yang/p/6114948.html