C语言改错题

2025-03-04 20:15:17
推荐回答(3个)
回答1:

#include
#include
int main(void)
{    
    /*********Found************/
    //char pch[2];    
    char * pch    //应该用一个char型指针指向申请的空间的首地址    
    /*********Found************/
    //if (pch = (char *)malloc(100) == NULL)
    if ((pch = (char *)malloc(100)) == NULL)  //漏了一对小括号    
    {
        printf("malloc memory fail!\n");        
        return 1;    
    }    
    printf("%p\n", pch);    
    /*********Found************/    
    //close(pch);
    free(pch);  //释放指针pch指向的内存块,应该用free,不是close
    return 0;
}

回答2:

第一部分,定义的必须是指针而不是数组,因为数组名是常量,不可更改。
第二部分,赋值运算符优先级低于关系运算符,所以赋值要打括号。
第三部分,应该用free(pch)来释放,free和malloc是一一对应的。

回答3:

/*********Found************/
//char pch[2];
char *pch;
/*********Found************/
if (pch = (char *)malloc(100) == NULL)
{
printf("malloc memory fail!\n");
return 1;
}
printf("%p\n", pch);

/*********Found************/
//close(pch);
free(pch);

我把错误的注释掉了,正确的语句写在下面。