我想创建一个void指针数组。
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
int main(){
void * A[3];
void * D[3];
void * F[2];
void * G[4];
void * H[4];
void * J[3];
void * K[5];
void * L[4];
void * M[5];
A={D, H, K};
D ={A, G, H};
F ={K, L};
G={D, H, J, M};
H={A, G, L, M};
J={G, L, M};
K={A, F, H, L, M};
L={F, J, K, M};
M={G, H, J, K, L};
return 0;
}
问题是代码不能编译它说:“{token”之前的预期表达式
有什么问题? 我正在使用这些指针因为它们的值无关紧要我只想让它们指向对方。例如,M必须指向G,H,J,K和L.
非常感谢您的任何帮助或建议,
答案 0 :(得分:6)
如果要使用该表示法,则必须在同一行上执行此操作。在你的情况下,你将不得不做
A[0] = D;
A[1] = H;
A[2] = K;
等等,因为您需要将void *添加到尚未在该点解析的符号。
答案 1 :(得分:4)
这就是C的工作方式。
我相信你想要的代码如下:
A[0] = D;
A[1] = H;
A[2] = K;
或代码如下:
void * A[3]={D,H,K};
答案 2 :(得分:2)
除了声明之外,不允许在赋值的左侧使用数组,并且数组初始值设定项也只能在声明期间使用。
所以你必须写例如:
A[0] = D;
A[1] = H;
A[2] = K;
答案 3 :(得分:2)
您不能将数组初始值设定项用作赋值。您需要明智地执行赋值:
A[0] = D;
A[1] = H;
A[2] = K;