我想轉換指針'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