c中int (*pt)[5]的含义是什么[重复]

问题描述 投票:0回答:3

我已经阅读了一些有关此类型声明的内容。 声明是:

int (*arr)[5];

我对这个类型声明有点困惑。实际上这个声明的含义是什么以及我们什么时候使用它。

c arrays pointers
3个回答
4
投票
int *arr[5]

arr
是 5 个指针的数组

int (*arr)[5]

arr
是指向 5 个整数元素的数组的指针

检查以下代码:

int a[5] = { 1,2,3,4,5};
int (*arr)[5] = &a;
printf("%d",(*arr)[2]);

现在可以像这样访问数组元素了

(*arr)[i]
不是
*arr[i]


3
投票

根据“声明先使用”规则:

  • (*arr)[i]
    int
    ,其中
    i < 5
    ,因此
  • *arr
    是一个
    int[5]
    ,一个由五个整数组成的数组,因此
  • arr
    是一个
    int (*)[5]
    ,指向包含五个整数的数组的指针。

2
投票

这意味着

arr
是一个指向 5 个整数数组的指针。 与不太令人困惑的五个指针数组进行比较:

int* arr[5];

这就是为什么你需要括号。

© www.soinside.com 2019 - 2024. All rights reserved.