C-指针数组与数组指针
指针数组
- 用于存放指针的数组
int a = 1, b = 2, c = 3; int* arr[3] = {&a, &b, &c}; // arr[0] == &a // *arr[0] == a int** p = arr; // *p == arr[0] == &a // p[0] == arr[0] == &a // *(p+1) == arr[1] == &b // **p == *arr[0] == a // *p[0] == *arr[0] == a // **(p+1) == *arr[1] == b
数组指针
- 用于指向整个数组的指针
int a[3]; int (*p)[3] = &a; // p = &a; printf("%d, %d, %d", *(*p), *(*p+1), *(*p+2)); // (*p)[0], (*p)[1], (*p)[2] // 1, 2, 3
p, &a 代表的是整个数组的首地址,指向了整个数组
*p 是指向首元素的指针, 表示所指向数组中首个元素的地址
- 数组指针可以处理二维数组
int arr[][3] = {{1, 2, 3}, {4, 5, 6}}; // 2*3 int (*p)[3] = arr; // 不需要对二维数组取地址, 此时数组指针指向的是二维数组中的第一个元素(数组) printf("%d", *(*p+1)); // 2 printf("%d", *(*(p+1)+2)); // 6 printf("%d", p[1][2]); // 6
本文作者:Khru
本文链接:https://www.cnblogs.com/khrushchefox/p/17301043.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2022-04-09 SQL Server-数据库的创建、分离、备份、附加和删除