2014电大C语言程序设计-笔试答案.docVIP

  • 1
  • 0
  • 约1.47万字
  • 约 19页
  • 2026-09-13 发布于北京
  • 举报

改错题

p=malloc(sizeof(int)*10);q=malloc(sizeof(int)*20);

p=q;free(p);free(q);

Free(q)错了,因为p=q后,就指向同一块地址了。内存泄露(p分配了空间没释放)

==============我的

一:由于malloc函数返回值为void*,所以还是应该强制转换为(int*),虽然我在运行时没有错,但一般都要指定指针类型。

二:由于p=q,两个指针指向同一个地址,free(p)之后,则该内存空间被释放,则q此时就没有具体指向一个地址,free(q)就会出错。

一般我们常说的内存泄露是指堆内存泄露,堆内存是指程序从对中分配的,大小任意的(内存块的大小可以再程序运行期确定),使用完后必须先释放内存。

和去年一样voidswap(char*a,char*b)

{char*temp;*temp=*a;*a=*b;*b=*temp;}

函数类型大小写错误。

2.交换形参指针地址不能修改实参的值。

正确修改法:见下

(解释)实参是str1和str2的地址,函数里改变了*p,*q的值,也就是str1和str2中存放的字符串的地址做了改变。所以str1里存放的str2所指字符串的地址

for(num=N;arr[num]!=item;num--);

printf(%d,num)

文档评论(0)

1亿VIP精品文档

相关文档