请指出以下程序的错误,并写出分析过程【多选】【5分】C++ void GetMemory ( char * * p , int num ) ( if ( NULL = = p && num < = 0 ) / / 1return ; * p = ( char * ) malloc ( num ) ; return ; ] int main ( ) char * str = NULL ; GetMemory ( & str , 80 );/ /2 if ( NULL ! = str ) strcpy ( & str , " hello " );/ / 3printf ( " % s\n " , str );/ /4 ) return 0 ; ) A:1 B : 2 C : 3 D : 4
时间: 2024-03-18 10:45:00 浏览: 113
选项 A 和 C 是正确的。
A:第一行的条件判断应该是 if (NULL == p || num <= 0),因为如果 p 为 NULL,就不能进行 *p 的赋值操作,而 num 不能小于等于 0,因为要分配 num 个字节的内存空间。
C:第三行的 strcpy 函数应该是 strcpy(str, "hello"),因为 str 已经是一个指针,不需要再加 & 符号。
分析过程:
1. 第一行的条件判断错误,应该是 if (NULL == p || num <= 0),选项 A 正确。
2. 第二行没有错误,选项 B 错误。
3. 第三行的 strcpy 函数错误,应该是 strcpy(str, "hello"),选项 C 正确。
4. 第四行没有错误,选项 D 错误。
阅读全文