我观察到int *x = malloc(sizeof(int));这个代码正在尝试将void*转换为int*而不使用正确的类型转换.所以,根据我的答案应该是选择一个.但是在官方的GATE-2017考试答案中,答案是给予D.所以我错了吗?怎么样 ?
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int *assignval(int *x, int val){
*x = val;
return x;
}
void main(){
clrscr();
int *x = malloc(sizeof(int));
if(NULL==x) return;
x = assignval(x,0);
if(x){
x = (int *)malloc(sizeof(int));
if(NULL==x) return;
x = assignval(x,10);
}
printf("%d\n",*x);
free(x);
getch();
}
Run Code Online (Sandbox Code Playgroud)
在我看来,选项D只在
int *x = (int *)malloc(sizeof(int));使用时才是正确的.