指针详细总结

来源:互联网 发布:2016最近网络最火的dj 编辑:程序博客网 时间:2024/06/05 12:02
int *p;int (*p)[10];int *p[10]

1.

把声明中指针变量的名字去掉就可以得到指针的类型,比如int *p,去掉p,指针类型为int *,int (*p)[10]指针类型为int (*)[10]注意,int (*)[10]代表的是一个指向含有是个元素的数组.而int *p[10],指针类型为int *[10],所代表的含义是一个含有10个指针元素的数组.

2.

需要注意以下取地址符号&的含义

int *p,a;p=&a;

通过1例子中我们知道只需要去掉变量名字就可以得到指针的类型,我们已经知道int *p类型是int *,a为int 类型,接下来这个结论很有用,就是没次取地址&,就相当于把a的地址给了p,相等的条件必须是p和&a的类型一致,则&a的类型应该是int *,可以看出一次&符号就相当于在a的类型之上加了一个*.以后都可以这样用.


看下面代码可以深入理解一下上面表达的意思

#include "iostream"using namespace std;int main(){    int a[10]={1,2,3,4};//类型int [10]    int (*p)[10];//p为一个指向10个元素的数组,类型int (*)[10]    p=&a;//&a类型为int (*)[10],相当于在a类型基础上增加了(*)    cout<<p<<endl;    cout<<&a[0]<<endl;//可以看出&a[0]和p输出一样,但是不能p=&a[0]因为&a[0]类型是int *//    cout<<(*p)[0];    int *q[10];//q为一个含10个指针元素的数组    int *z;    q[1]=z;    int (*p2)[10];    int  a2[10][10];    p2=a2;//    *p[2]=2;}



0 0
原创粉丝点击