relloct使用时为什么不用强制类型转换?

如。 ingp=realloc(NULL,40);
realloct前为什么可以不加(int
)进行强转?

首先题主的代码应该是想表现成这样吧:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int *p = realloc(NULL,40);
    p[0] = 10;
    p[1] = 12;
    int n = 2;
    for(int i = 0;i < n; ++i)
        printf("%d\n",p[i]);
    return 0;
}

realloc 函数返回的是一个 void *的指针,在 c语言中,可以不用强制转换,直接使用,但是在C++就不行,而且为了养成一个良好的编码习惯,还是建议写上强制转换~

在C++中会出现以下报错:

img