在写G.vexs[i] = (VerTexType*)malloc(sizeof(VerTexType));时发生[Error] invalid conversion from 'VerTexType* {aka char*}' to 'VerTexType {aka char}' [-fpermissive]
时间: 2024-02-12 09:08:14 浏览: 68
这个错误通常发生在将指针类型转换为非指针类型时,或者将不同类型的指针进行转换时。在你的代码中,可能是在将VerTexType指针转换为VerTexType类型时出现了这个问题。
你需要将代码改成下面这样:
```c
G.vexs[i] = (VerTexType)malloc(sizeof(struct VerTexType));
```
这样就可以将指向VerTexType类型的指针转换为VerTexType类型了。需要注意的是,使用malloc分配的空间需要手动释放,否则会导致内存泄漏。在程序结束时,需要使用free函数释放G.vexs中所有元素所分配的空间。例如:
```c
for (int i = 0; i < G.vexnum; i++) {
free(G.vexs[i]);
}
```
这样就可以释放所有顶点所占用的空间了。
相关问题
在写G.vexs[i]= (VerTexType)malloc(sizeof(VerTexType));时发生[Error] cast from 'void*' to 'VerTexType {aka char}' loses precision
这个错误通常发生在将void类型指针转换为其他类型时,但转换后的类型的大小比void类型更小,导致精度丢失。在你的代码中,可能是在将void类型指针转换为VerTexType类型时出现了这个问题。
你可以尝试使用以下转换方式,将void指针转换为VerTexType指针:
```c
G.vexs[i] = (VerTexType*)malloc(sizeof(VerTexType));
```
这样就可以将void指针转换为VerTexType指针了。需要注意的是,使用malloc分配的空间需要手动释放,否则会导致内存泄漏。在程序结束时,需要使用free函数释放G.vexs中所有元素所分配的空间。例如:
```c
for (int i = 0; i < G.vexnum; i++) {
free(G.vexs[i]);
}
```
这样就可以释放所有顶点所占用的空间了。
在写G.vexs[i] = (VerTexType)malloc(sizeof(struct VerTexType));时遇到[Error] cast from 'void*' to 'VerTexType {aka char}' loses precision [-fpermissive]
这个错误通常发生在将void类型指针转换为其他类型时,但转换后的类型的大小比void类型更小,导致精度丢失。在你的代码中,可能是在将void类型指针转换为VerTexType类型时出现了这个问题。
你需要将代码改成下面这样:
```c
G.vexs[i] = (VerTexType)malloc(sizeof(struct VerTexType));
```
这样就可以将指向VerTexType类型的指针转换为VerTexType类型了。需要注意的是,使用malloc分配的空间需要手动释放,否则会导致内存泄漏。在程序结束时,需要使用free函数释放G.vexs中所有元素所分配的空间。例如:
```c
for (int i = 0; i < G.vexnum; i++) {
free(G.vexs[i]);
}
```
这样就可以释放所有顶点所占用的空间了。
阅读全文