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
都是数组,但当在赋值的右侧使用时,它们会自动衰减为指针。