【问题标题】:What's the difference between “int a[5]” and int (*a)[5], int a[5][4] and int (*a)[5]? (C only)“int a[5]”和int(*a)[5]、int a[5][4]和int(*a)[5]有什么区别? (仅限 C)
【发布时间】:2015-05-28 20:48:01
【问题描述】:

在上述每种情况下,什么是“a”,指针或数组。请详细说明。提前致谢。

【问题讨论】:

  • 你应该试试这个网站:cdecl.org。玩得开心。

标签: c arrays


【解决方案1】:
  1. int a[5] a5 int 的数组。
  2. int (*a)[5]a 是指向5int 数组的指针。
  3. int a[5][4]a5 的数组 4 int 的数组。
  4. int *a[5] a 是一个由 5 int 指针组成的数组。

【讨论】:

  • 是 int (*a)[5] 和 int *a=(*int)malloc(5*sizeof(int));
  • 我认为 #3 是倒退的:5 个数组,每个数组 4 个 ints,或者我只是无法解析句子。
  • @Apvast 不,不是那样,因为 int 这种情况下内存是在堆上分配的,它更像是int b[5]; int *a = b;
  • 它看起来更像是一个OP失败的考试题。
  • 哎呀,没有作业...你能告诉我一些关于这些概念的非常好的参考吗?
猜你喜欢
  • 2014-11-05
  • 1970-01-01
  • 2017-12-11
  • 2020-05-03
  • 1970-01-01
  • 2021-09-17
  • 2020-07-15
  • 2021-05-04
  • 2020-12-27
相关资源
最近更新 更多