代码之家  ›  专栏  ›  技术社区  ›  dreamlax

像“char s[static 10]”这样的函数的数组参数中static关键字的用途是什么?

  •  126
  • dreamlax  · 技术社区  · 14 年前

    void someFunction(char someArray[static 100])
    {
        // do something cool here
    }
    

    在一些实验中,似乎也会出现其他限定符:

    void someFunction(char someArray[const])
    {
        // do something cool here
    }
    

    似乎限定符只允许在 [ ] 当数组被声明为函数的参数时。这些是做什么用的?为什么函数参数不同?

    1 回复  |  直到 8 年前
        1
  •  137
  •   Todd Lehman ipmcc    4 年前

    第一个声明告诉编译器 someArray 至少 someArray公司 NULL .

    第二个声明只是声明 someArray公司 someArray公司 someArray=someOtherArray . 与参数相同 char * const someArray .

    此语法仅在最内层中可用 [] 函数参数列表中的数组声明符;这在其他情况下是没有意义的。

    作为类型数组的参数声明应调整为指向类型的限定指针,其中类型限定符(如果有)是在 [ ] 数组类型派生的。如果关键字static也出现在 [ 在数组类型派生中,则对于函数的每次调用,对应的实际参数的值应提供对数组的第一个元素的访问,该元素的数量至少为 由大小表达式指定的元素。