数组元素类型为指针的数组(存储内容为指针)
#include
int main()
{
/* 指针数组 */
// 1 定义几个int类型的变量
int a, b, c;
a = 1;
b = 2;
c = 3;
// 2 定义几个int*类型的指针
int* pa, * pb, * pc;
pa = &a;
pb = &b;
pc = &c;
// 3 定义一个数组 数组元素是int*类型的指针 长度为3
// 元素类型 数组名[长度] = {};
int* arr[3] = { pa, pb, pc };
// 访问数组元素(通过数组名arr修改b的值)
// arr[0] <===> pa *pa <==> a
// arr[1] <===> pb *pb <==> b
// arr[2] <===> pc *pc <==> c
printf("b = %d\n", b);
b = 20;
printf("b = %d\n", b);
*pb = 30;
printf("b = %d\n", b);
*arr[1] = 40;
printf("b = %d\n", b);
return 0;
}
指向数组的指针
#include
int main()
{
/* 数组指针 */
// 1 定义一个数组
int arr[5] = { 1, 2, 3, 4, 5 };
// 2 定义一个指针指向数组arr
// 指针指向的类型* 指针名 ;
int(*p)[5] = &arr;
// 定义了一个指针p
// p指向的类型:int [5] (是一个数组)
// p本身的类型:int(*)[5]
// 通过数组指针p 访问数组元素arr[2]
// p <====> &arr
// *p <====> arr
// (*p)[2] <====> arr[2]
printf("(*p)[2] = %d\n", (*p)[2]); // 3
// 结论: p[n] <==> *(p+n)
printf("*(*p+2) = %d\n", *(*p + 2)); // 3
printf("p[0][2] = %d\n", p[0][2]); // 3
printf("*(p[0] + 2) = %d\n", *(p[0] + 2)); // 3
return 0;
}
数组指针的定义(类型得推导)
数组元素类型(*)数组长度
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有