我想转换指针'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;
}
答案 0 :(得分:3)
您可以更轻松地将malloc
返回的空指针直接转换为int*
#include<stdio.h>
#include <stdlib.h>
int main(void)
{
int *p;
p = malloc(sizeof(int));
if(p == NULL)
{
perror("fail to malloc");
exit(1);
}
*p=100;
printf("the value is : %d\n",*p);
return 0;
}
答案 1 :(得分:2)
声明后,您无法更改变量的类型。对于您的要求,您需要声明一个单独的int*
变量并使用type-cast为其分配p
变量:
int *i = (int *)p;
*i = 100;
printf("the value is : %d\n", *i);
或者,只需将p
声明为int*
即可开始,然后输入malloc()
返回的指针,就像@GWW所示。
答案 2 :(得分:1)
您无法更改变量类型,您可以进行类型转换,但这只是暂时的。
你想要的是*(int*)p = 100;
printf("the value is : %d\n", *(int*)p);
答案 3 :(得分:1)
你做不到。但是你可以创建一个指向int的新指针并指向该位置,如:
void *p;
p= malloc...
int *pi;
pi= p;
*pi= 25;