【问题标题】:Is that fixed-size array? a[] [closed]那是固定大小的数组吗?一个[] [关闭]
【发布时间】:2019-12-09 14:22:48
【问题描述】:

我开始学习 C 编程。

a[20]a[]

我知道a[20] 是一个固定大小 数组,但是a[] 呢?

【问题讨论】:

  • 上下文/用法是什么?
  • 如果它是一个参数,它是一个指向第一个元素的指针。如果它是一个定义和初始化(例如,int a[] = { 1, 2, 3 };),它只是告诉编译器计算元素的数量并使数组正好是那个大小。如果它是struct 的最后一个成员,则它是一个灵活的数组成员,在结构的其余部分之后分配了灵活的大小。

标签: c arrays fixed-size-types


【解决方案1】:

在不知道正确的上下文/用法的情况下,不可能提供直接的答案,但是,让我举一些常用案例的例子:

  1. 在块作用域中,使用a[] 等语法定义的数组,

    char a[] = "Some Name";
    

    仍然是一个固定大小的数组。大小从初始化器中获取,例如:上面的数组大小为10(包括空终止符)。

  2. 另一方面,在函数参数的情况下,语法如a[]

    void func (int a[])
    

    相同
    void func (int *a)
    

    它不是一个数组,它是一个指针。

  3. 如果此语法显示为具有多个命名成员的结构的最后一个元素,则称为灵活数组成员。它是一个不完整的数组类型。例如:

    struct s { int n; double d[]; };
    

【讨论】:

  • 还有很多其他情况,比如不完整的数组类型、灵活的数组成员等。没有上下文就无法回答这个问题,就像你要求的那样。
  • @Lundin 先生,您说得非常对,我试图涵盖常用案例,但让我扩展以添加更多内容。同时,我希望 OP 能够按照我的要求返回上下文。
猜你喜欢
  • 1970-01-01
  • 2012-03-17
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
相关资源
最近更新 更多