C中的void指针数组

时间:2011-08-31 18:59:02

标签: c pointers void

我想创建一个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.

非常感谢您的任何帮助或建议,

4 个答案:

答案 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;