我想转换指针'p'的类型。开始,指针p的类型是无效的。为它分配四个字节的内存后,我将指针类型转换为'int',但是这不起作用。也许句子p=(int *)p
不起作用。
请告诉我为什么,并解决问题。谢谢。
编码:如何转换指针的类型
#include<stdio.h>
#include <stdlib.h>
int main(void)
{
void *p;
p=malloc(sizeof(int));
if(p == NULL)
{
perror("fail to malloc");
exit(1);
}
p=(int *)p;
*p=100;
printf("the value is : %d\n",*p);
return 0;
}
甚至不需要走那么远。只要将'p'设为'int *'而不是'void *'。 – Marlon 2012-04-25 01:41:44
我知道我们正在处理一个角落案例,但我不建议发布投射来自'malloc(3)'的返回值的代码 - 该投射实际上可以隐藏来自编译器的有用警告消息。 – sarnold 2012-04-25 01:47:31
[不要从malloc投下返回值](http://stackoverflow.com/a/605858/241631) – Praetorian 2012-04-25 01:48:18