指针详细总结

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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值