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

指向数组的指针数组?

  •  4
  • unrelativity  · 技术社区  · 16 年前

    我使用的是一个库,其中一个特定的特性包含如下变量:

    extern const u8 foo[];
    extern const u8 bar[];
    

    但是,我希望能够通过数组(或其他类似方法)访问这些变量,这样就不需要不断地将这些变量的新实例硬编码到主代码中。

    我第一次尝试创建数组如下:

    const u8* pl[] = {
        &foo,
        &bar
    };
    

    这给了我一个错误 cannot convert 'const u8 (*)[]' to 'const u8*' in initialization ,在其他地方的帮助下,通过谷歌搜索,我将数组改为:

    u8 (*pl)[] = {
        &foo,
        &bar
    };
    

    编译后,我现在得到了错误 scalar object 'pl' requires one element in initializer .

    有人知道我做错了什么吗?谢谢。

    4 回复  |  直到 16 年前
        1
  •  7
  •   fredoverflow    16 年前

    foo 和 bar

    const u8 (*pl[])[32] = {&foo, &bar};
    

    如果不是这样,则必须使用指向字节的指针数组。

    const u8 *pl[] = {foo, bar};
    
        2
  •  2
  •   CB Bailey    16 年前

    例如。

    const u8* pl[] = { foo, bar };
    

    const u8 (*pl[])[] = { &foo, &bar };
    

    但我不认为它真的比以前的解决方案有任何优势。

        3
  •  1
  •   anon anon    16 年前
    extern const int a[];
    
    const int *  aa[] = { a };
    
        4
  •  1
  •   Loki Astari    16 年前

    卸下&。数组通常衰减为指针。

    typedef int u8;  // Using int as I don't know what a u8 is.
    
    const u8 foo[] = { 1, 2, 3};
    const u8 bar[] = { 1 };
    
    const u8* pl[] = {
        foo,
        bar
    };