【问题标题】:Difference and names of the arrays [closed]数组的区别和名称[关闭]
【发布时间】:2015-01-18 08:08:34
【问题描述】:

数组声明int *a[20]int a[20]int (*a)[20]有什么区别?

它们的名字是什么?它们在编程中是如何应用的? 写 *a++ 在前两种情况下会产生错误以及 a++ 而在第三种情况下不会?为什么?

【问题讨论】:

  • 阅读基础教程对您很有帮助,这些主题是非常基础的 C 编程。
  • Sniff Sniff - 周日 - 也许是家庭作业
  • 更新问题并向现有问题添加其他问题会导致更多反对票
  • 记住'声明匹配使用'。声明符(示例中int 之后的位)在用代码编写时将产生int。如果变量有不同的名称会更容易。第一个表示*a[1]int,或者a[1]int *。第二个意味着a[1]int。第三个表示(*a)[1]int。前两个是数组;你不能增加数组(数组是not、重复not、指针——但数组和指针密切相关)。最后一个是指针(指向数组),可以更改。

标签: c arrays declaration


【解决方案1】:
int *a[20];

a 是 20 个指针的数组

int a[20];

a 是由 20 个 int 元素组成的数组

int (*a)[20];

a 是指向 20 个 int 元素的数组的指针

编辑:

当您有a++ 时,其中a 是一个数组,那么这相当于a= a + 1;,并且根据以下标准数组名称不能是可修改的左值。

可修改的左值是没有数组类型的左值, 没有不完整的类型,没有 const 限定 类型,如果是结构或联合,则没有任何成员 (包括,递归地,所有包含的任何成员或元素 聚合或联合)具有 const 限定类型。

【讨论】:

    【解决方案2】:
    • int a; // 一个整数
    • int *a; // 指向整数的指针
    • int **a; // 一个指向整数的指针
    • int a[10]; // 10 个整数的数组
    • int *a[10]; // 一个包含 10 个整数指针的数组
    • int (*a)[10]; // 指向 10 个整数数组的指针
    • int (*a)(int); // 一个指向函数 a 的指针,它接受一个整数参数并返回一个整数
    • int (*a[10])(int); // 一个包含 10 个指针的数组,指向接受整数参数并返回整数的函数

    人民币咨询的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多