2014电大C语言程序设计-笔试教程分析.doc

改错题 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)就会出错。 一般我们常说的内存泄露是指堆内存泄露,堆内存是指程序从对中分配的,大小任意的(内存块的大小可以再程序运行期确定),使用完后必须先释放内存。 和去年一样 void swap(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精品文档

相关文档