图片上的警告怎么改啊(语言-c语言)

#include <stdio.h>
#include <stdlib.h>
int main()
{

int* p = (int*)malloc(40);
if (p!=NULL)
{
    ;
}
for (int i = 0; i < 10; i++)
{
    printf("%d", p[i] = i);
}
printf("\n");
int* ptr = NULL;
ptr = (int*)realloc(p, 80);
if (ptr != NULL)
{
    p = ptr;
}
for (int i = 0; i < 20; i++)
{
    printf("%d", p[i] = 1);
}
free(p);
p = NULL;
return 0;

}

img

首先 我用Linux进行简单测试,倒是没有什么警告。可能编译器相关

img


其次,因为环境限制,没有用vs尝试,分析你的代码 你可以注意的两个点是,试试能不能消除警告(如果不能,再根据编译器提示再继续调):

img

这句啥意思啊:
if (p!=NULL)
{
;
}

如果p是空,还要往p里循环赋值的话就会出问题。
应该把这块直接替换成
if(p==NULL)exit(-1);//或return -1;


可以看下c语言参考手册中的 c语言-exp()