C语言中的void指针数组

C语言中的void指针数组,c,pointers,void,C,Pointers,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};

我想创建空指针数组

# 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;
}
#包括
#包括
#包括
int main(){
无效*A[3];
无效*D[3];
无效*F[2];
void*G[4];
void*H[4];
void*J[3];
void*K[5];
无效*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};
返回0;
}
问题是代码不会编译,它说:“在{token之前应该有表达式”

怎么了? 我之所以使用这些指针,是因为它们的值无关紧要,我只是希望它们相互指向。例如,M必须指向G,H,J,K和L


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

如果您想使用该符号,您必须在同一行上进行。在您的情况下,您必须这样做

A[0] = D;
A[1] = H;
A[2] = K;

依此类推,因为您需要将void*添加到此时尚未解析的符号。

除非声明,否则不允许在赋值的左侧使用数组,并且数组初始值设定项也只能在声明期间使用

因此,您必须编写以下示例:

A[0] = D;
A[1] = H;
A[2] = K;

不能将数组初始值设定项用作赋值。需要按元素进行赋值:

A[0] = D;
A[1] = H;
A[2] = K;

这就是C的工作方式

我相信您需要这样的代码:

A[0] = D;
A[1] = H;
A[2] = K; 
void * A[3]={D,H,K};
或类似以下内容的代码:

A[0] = D;
A[1] = H;
A[2] = K; 
void * A[3]={D,H,K};

需要指出的是,尽管
D
H
K
都是数组,但当在赋值的右侧使用时,它们会自动衰减为指针。