【发布时间】:2014-03-26 09:39:05
【问题描述】:
我做了这个小代码:
void *toto = malloc(8 * sizeof(char *) * 8);
char **tata = (char **)toto;
tata[5][5] = 'a'
但我有一个分段错误。如何将我的 void * 转换为 char ** ?
【问题讨论】:
-
您为什么以及要达到什么目标?
-
这只是一个测试。没有原因,没有其他代码。
-
当然可以。你在做。您只是使用未初始化的值进行操作,因此最好的情况是崩溃。
-
@JérémyPouyet 也会崩溃,你为什么不使用调试器看看值是什么
-
@Jérémy,
char**- 这意味着 tata 是指向 char 指针的指针。不是二维数组!因此,当您将 toto 类型转换为它时 - toto 必须是指向位置的指针,其中存储了指向 char 的指针。