C++指针数组和数组指针

C++笔记 指针与数组 指针数组与数组指针_Love coldplay的博客-优快云博客

数组指针,它是指向一个数组的指针。

指针数组,它是一个数组,数组中每个元素都是指针。 

//一维数组a和二维数组b
int a[5] = {1, 2, 3, 4, 5};
int b[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};

//普通指针ptr1,类型为int*,值为数组a的第一个元素的地址,
//ptr1 + 1等价于地址向前移动一个int的内存大小(即4字节)
int* ptr1 = a;

//数组指针ptr2,类型为int (*)[5],代表一个指向有5个元素数组的指针,
//值为数组a的第一个元素的地址,ptr2 + 1等价于地址向前移动一个数组的内存大小(即20字节)
int (*ptr2)[5] = &a; //&不可去掉,a类型是int*,&a类型是int (*)[5]

//指针数组ptr3,[]优先级高于*,故ptr3是有4个元素的数组,
//数组中的每个元素都是int*类型的指针
int *ptr3[4];


//数组指针常用来表示二维数组,p指向拥有四个元素的数组,p的值为二维数组第一个元素的地址
int (*p)[4] = b; //b是二维数组名,不用加&,b作为指针时其类型为int (*)[4],值为b[0][0]的地址

//输出16 16,*p表示b的第一行数组,*(p+1)表示b的第二行数组
cout << sizeof(*p) << " " << sizeof(*(p+1)) << endl;

//输出0 0,二者都指向b[0][0]
cout << *p[0] << " " << **p<< endl;

//输出4 4,二者都表示b[1][0]
cout << *(p+1)[0] << " " << **(p+1) << endl;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值