无效表达的无效使用;从空指针指向的数组复制信息;进入由char指针指向的数组
我想将保存在symbol_和_头中的编码_symbol_选项卡[0]中的所有数据存储起来。 “encoding_symbols_tab”指向一个数组,例如500*1024个字符 我为这个例子修改了下面的代码无效表达的无效使用;从空指针指向的数组复制信息;进入由char指针指向的数组,c,compiler-errors,C,Compiler Errors,我想将保存在symbol_和_头中的编码_symbol_选项卡[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
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**encoding\u symbols\u选项卡;
(..)
char*返回\u符号\u和\u头\u数组()
{//abcd
char*symbol_和_头=(char*)calloc(1,1024+14);
(..)
int k=0;
对于(k=0;k<1024;k++)
{
符号_和_头[k+14]=(字符)编码_符号_选项卡[0][k];
}
返回符号_和_头;
}
当我运行此代码时,我得到“错误:无效使用void表达式”
如何更改代码以解决此问题(不更改“void**encoding\u symbols\u tab”的类型)。?
这是一个C程序。使用
((char**)encoding_symbols_tab) [0][k];
如果
encoding\u symbols\u tab
指向字符,为什么要声明它指向void*
s?不能取消引用void*
指针,因为它不指向任何类型的数据
您可以声明char**encoding\u symbols\u tab
而不是void**encoding\u symbols\u tab
,但是,首先,确保它真正指向的是它。在你的问题中,你认为可能是其他原因:
- 如果
指向500*1024个字符(即512000个字符)的平面数组,则必须:encoding\u symbols\u tab
- 将
声明为编码\u符号\u选项卡
char*
- 将其元素引用为
编码\u符号\u选项卡[x*1024+k]
- 将
- 如果
指向一个包含500个encoding\u symbols\u tab
指针的数组,并且每个指针指向一个包含1024个字符的数组,则必须:char*
- 将
encoding\u symbols\u选项卡声明为
char**
- 将其元素引用为
encoding\u symbols\u tab[x][k]
- 将
假设
x
是第一个维度(共500个),而k
是第二个维度(共1024个)。如何填充编码符号选项卡?它包含什么?请尝试((char**)encoding_symbols_tab)[0][k]
FYI,您不需要强制转换malloc()
(或calloc()
)的返回值。