在前面总结参数传递的三种方式时,我们提到,在建立一个指针之后,我们首先要给它一个地址,即int *p=&a;之后p本身的值所代表的就是它所指向内容的地址,而*p就是它所指向的内容的值。但之前我们讨论的,都是指针指向一个值的情况,例如指向一个int型变量或者char型等等。但今天在复习深浅复制时,发现当我们的指针指向的是一块连续区域时(例如字符数组),上述的很多结论就不成立了。
来看例子:
char *n;n=new char[10001];//分配一块内存给n;
我们定义了一个指向字符型变量的指针,然后为它分配了一块内存,所以现在它已经得到一个地址了,那么现在n本身的值代表的是否还是一个地址呢?如果不是的话,那么*n所代表的又是什么呢?同时我们有应怎样修改它所指向区域的值?
①、n现在代表的不再是一个地址,而是它所指向区域的值;
#include
using namespace std;
int main()
{char *n;n&#61;new char[10001];n&#61;"abc";cout<}
②、*n所代表的是n指向区域的首元素&#xff08;是单个字符&#xff0c;而不是字符串&#xff09;&#xff1b;
#include
using namespace std;
int main()
{char *n;n&#61;new char[10001];*n&#61;&#39;a&#39;;//不能写成*n&#61;"abc"&#xff0c;原因略;cout<<*n<}//输出结果&#xff1a;a &#xff1b;
③、修改目标区域的值&#xff0c;直接n&#61;" 所需要的内容 "。
The end&#xff1b;