【发布时间】:2021-07-26 01:35:57
【问题描述】:
int x=10;
int *p;
p=&x;
int **pp=&p;
cout<<**pp<<"\n"<<*p<<"\n"<<pp<<"\n"<<&p<<"\n";
在上述情况下一切顺利,但是当我改变了声明指针 p 的方式时:
int x=10;
int *p;
*p=x;
int **pp=&p;
cout<<**pp<<"\n"<<*p<<"\n"<<pp<<"\n"<<&p<<"\n";
它没有给出任何输出。 这是为什么呢?
【问题讨论】:
-
您正在为
*p分配一个值,而没有先为其分配空间。 -
在第一个示例中,您将
x的地址分配给p。在另一个中,您将x的值分配给p当前指向的任何位置(它指向任何地方) -
它没有给出任何输出。为什么会这样?我怀疑你要么没有启用编译器警告,要么你忽略了编译器的警告。
标签: c++ pointers reference initialization declaration