0

我想将所有保存在 encoding_symbols_tab [0] 中的数据存储在 symbol_and_header 中。'encoding_symbols_tab' 指向一个数组,例如 500 * 1024 个字符。

我为此示例修改了以下代码。

void** encoding_symbols_tab;

(..)

char* return_symbol_and_header_array ()
    { //abcd
    char* symbol_and_header =  (char*)calloc(1, 1024 + 14 );
    (..)   
    int k=0;
    for (k=0; k < 1024; k++)
    {
    symbol_and_header [k+14] = (char) encoding_symbols_tab [0][k];
    }

    return symbol_and_header;
    }

当我运行此代码时,我收到“错误:无效表达式的无效使用”我应该如何更改代码以解决此问题(不更改“无效** encoding_symbols_tab”的类型)。?它是一个 C 程序。

4

2 回答 2

1

采用

((char**)encoding_symbols_tab) [0][k];
于 2012-04-10T21:06:11.227 回答
1

如果encoding_symbols_tab指向字符,为什么要声明它指向void *s?您不能取消引用void *指针,因为它不指向任何类型的数据。

您可以声明char **encoding_symbols_tab而不是void **encoding_symbols_tab,但首先,请确保这是它真正指向的内容。在你的问题中,你建议它可能是别的东西:

  • 如果encoding_symbols_tab指向 500 * 1024 个字符(即 512000 个字符)的平面数组,那么您必须:
    • 声明encoding_symbols_tabchar *
    • 将其元素引用为encoding_symbols_tab[x*1024+k]
  • 如果encoding_symbols_tab指向一个由 500 个char *指针组成的数组,而这些指针本身又指向一个由 1024 个字符组成的数组,那么您必须:
    • 声明encoding_symbols_tabchar **
    • 将其元素引用为encoding_symbols_tab[x][k]

假设x是第一个维度(共 500 个)并且k是第二个维度(共 1024 个)。

于 2012-04-10T21:08:36.200 回答