我正在尝试将 void * 指针更改为结构数组。\n重点是将全局可见指针初始化为 NULL,当 main 启动时,该指针将转换为结构数组\n 这是一个最小的示例。
\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nvoid * hashtable;\n\nstruct bucket {\n int a;\n int b;\n};\n\nint main (void)\n{\n hashtable = (struct bucket)malloc(6*sizeof(struct bucket));\n int i ;\n //for(i=0;i<6;i++)\n // hashtable[i] = malloc(sizeof(struct bucket));\n\n *(struct bucket)hashtable[0]->a = 12;\n\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我得到的错误是:
\n\ntest.c:16:52: error: conversion to non-scalar type requested\n hashtable = (struct bucket)malloc(6*sizeof(struct bucket));\n ^\ntest.c:21:27: warning: dereferencing \xe2\x80\x98void *\xe2\x80\x99 pointer\n *(struct bucket)hashtable[0]->a = 12;\n ^\ntest.c:21:27: error: void value not ignored as it ought to be\nRun Code Online (Sandbox Code Playgroud)\n c ×1