Welcome to my blo|

Khru

园龄:2年11个月粉丝:22关注:1

📂C
2023-04-09 20:53阅读: 10评论: 0推荐: 0

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 中国大陆许可协议进行许可。

posted @   Khru  阅读(10)  评论(0编辑  收藏  举报
历史上的今天:
2022-04-09 SQL Server-数据库的创建、分离、备份、附加和删除
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起