我想在symbols_and_header中存储encoding_symbols_tab [0]中保存的所有数据。 '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;
}
当我运行此代码时,我得到'错误:无效使用void表达式' 我应该如何更改代码以解决此问题(不改变'void ** encoding_symbols_tab'的类型)。 这是一个C程序。
答案 0 :(得分:1)
使用
((char**)encoding_symbols_tab) [0][k];
答案 1 :(得分:1)
如果encoding_symbols_tab
指向字符,为什么要将其声明为指向void *
?您不能取消引用void *
指针,因为它不指向任何类型的数据。
您可以声明char **encoding_symbols_tab
而不是void **encoding_symbols_tab
,但首先要确保它真正指向的是什么。在你的问题中,你建议它可能是别的东西:
encoding_symbols_tab
指向500 * 1024个字符(即512000个字符)的平面数组,那么您必须:
encoding_symbols_tab
声明为char *
encoding_symbols_tab[x*1024+k]
encoding_symbols_tab
指向500个char *
指针的数组,这些指针本身都指向1024个字符的数组,那么您必须:
encoding_symbols_tab
声明为char **
encoding_symbols_tab[x][k]
假设x
是第一个维度(500个),k
是第二个维度(1024个)。