&p , *p , p, *(&p)表示什么?
int *p;
p=new int[3];
p[0]=1;
p[1]=2;
p[2]=3;
&p , *p , p , *(&p)这三个各表示什么意思?
这里new int[3]返回指向所请求的准确类型对象的指针,这里准确是返回数组第一个元素的地址,也就是数值首地址。
因此&p是获取指针p的地址,也就是指向数组首地址的指针的地址。
*p:这里的*用于指针的间接引用(*的第三个用途,另外两种用法是:乘法和定义指针)。 间接引用指针时,可获得由该指针指向的变量内容。此处是获取数组首元素内容,也就是1;
p:是数组首地址。
*(&p):获取指针p地址所存内容,也就是指向数组首地址的内容。
随手画了个草稿。有点丑,将就看。
代码如下:
#include<iostream> using namespace std; int main(){ int *p; p=new int[3]; p[0]=1; p[1]=2; p[2]=3; cout<<&p<<endl; //获取指针p的地址,也就是指向数组首地址的指针的地址 cout<<*(&p)<<endl;//获取指针p地址所存内容,也就是指向数组首地址的内容。 cout<<*p<<endl;//获取指针所指向地址所存内容 cout<<p<<endl; //获取指针p所存内容 for (int i=0;i<3;i++) { cout<<&p[i]<<"\t"<<p[i]<<endl; } }
运行结果:
、
个人观点,有错欢迎指正。