【问题标题】:How to initialize an array of pointers to array of char of different length?如何初始化指向不同长度字符数组的指针数组?
【发布时间】:2014-07-12 04:16:24
【问题描述】:

我想做的是这样的:

#define A 1
#define B 2
#define C 99
const char row1[] = {A|B, B, A, C};
const char row2[] = {B, A, C};
...
const char row99[] = {B, A, B ,A, A, C};
const char *test[]= {row1, row2, ... , row99};

我的问题是如何通过以下方式实现上述目标:

#define A 1
#define B 2
#define C 99
const char *test[] = {
    {A|B, B, A, C},
    {B, A, C},
     ....
    {B, A, B ,A, A, C} 
}

我不想要这样的固定长度二维数组:

test[][5] = { {A|B, B, A, C}, {B, A, C}, ...

我还需要#define 并在初始化中使用这些标记。

如果有人能告诉我正确的语法来做到这一点,我们将不胜感激。谢谢。

【问题讨论】:

  • 这是什么语言的?

标签: c arrays pointers char initialization


【解决方案1】:

我猜这指的是 C。在 C99 中你可以这样做:

char const *const test[] = {
    (char const[]){1, 2, 3, 4},
    (char const[]){1, 2, 3},
    (char const[]){1, 2, 3, 4, 5, 6, 7}
};

(typename[]){initializer-list} 语法称为复合文字。在 C99 之前,唯一的文字类型是字符串文字,您想要做的事情是不可能的;您必须使用第一种方法,或者对定义系统进行重大更改。

请注意,在此代码中,无法说明每个字符系列的长度。您将需要添加一些确定长度的方法(例如末尾的哨兵值)。

【讨论】:

    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2011-07-08
    • 2012-12-19
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    相关资源
    最近更新 更多