如何转换指针的类型

时间:2012-04-25 01:33:48

标签: c

我想转换指针'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;
 } 

4 个答案:

答案 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;