【问题标题】:C/C++: Constant array of constant arraysC/C++:常量数组的常量数组
【发布时间】:2011-01-04 04:48:20
【问题描述】:

创建常量数组的常量数组的语法是什么?

我希望函数参数是常量char* 字符串的常量数组。

【问题讨论】:

    标签: c++ arrays multidimensional-array constants


    【解决方案1】:

    您可以将const 放在第一个星号的右侧,例如

    void f(const char *const *argument)
    

    或等效

    void f(const char *const argument[])
    

    对于更多维度,只需添加更多*consts(在这种情况下我不会使用[] 替代):

    void f(const char *const *const *argument) // 2D array of strings
    

    【讨论】:

    • 好的,谢谢...但是像const char* const* argument 这样的星号不是更清楚吗?
    • 没有。这种风格具有误导性和有害性。它给人的印象是星号绑定到左侧,而实际上它们绑定到右侧。
    【解决方案2】:

    关键是把 C++ 倒写(从右到左):

             char * const myVar[10] const;
    

    ...表示 myVar 是一个长度为 10 的 const 指向 char 的指针的 const 数组。

    【讨论】:

      【解决方案3】:

      这个问题有点不清楚:你想创建(定义)一个数组,还是传递它给一个函数?

      定义常量C-strings的常量数组的语法是

      const char array[2][14] = { "first string", "second string" };
      

      要定义非字符串类型的常量数组的常量数组,初始化器不同:

      const int array[2][3] =
      {
        { 1, 2, 3 },
        { 4, 5, 6 }
      };
      

      (如果合适的话,你应该把数组设为static const。)

      【讨论】:

        【解决方案4】:

        我相信那会是一个

        const char* const array[size][size] = { /* initializer */ }
        

        也就是说,一个由指向无法更改的字符的不可变指针组成的数组。

        【讨论】:

          猜你喜欢
          • 2015-12-18
          • 2011-02-04
          • 1970-01-01
          • 2019-02-23
          • 1970-01-01
          • 1970-01-01
          • 2011-12-09
          • 1970-01-01
          • 2015-10-29
          相关资源
          最近更新 更多