void GetMemory(char *p){
p=(char *)malloc(100);
}
void Test(void){
char *str=NULL;
GetMemory=(str);
strcpy(str,"hello world");
printf(str);}
3) 请指出下列程序中的错误并且修改
答案:2 悬赏:30
解决时间 2021-03-17 05:49
- 提问者网友:江山如画
- 2021-03-16 21:07
最佳答案
- 二级知识专家网友:荒唐后生
- 2021-03-16 21:15
改法很多,这里提供两种,具体错误见注释。
方法1:
void GetMemory(char **p){//要改为指针的指针.
if((*p=(char *)malloc(100))==NULL){//要验证是否成功.
printf("Can't get memory...");
exit(0);
}
}
void Test(void){
char *str=NULL;//
GetMemory(&str);//中间不能有=号,应改为GetMemory(&str);
strcpy(str,"hello world");
printf(str);
free(str);//要释放内存.
}
方法2:
char *GetMemory(void){//要改为返回指针.
char *p;
if((p=(char *)malloc(100))==NULL){//要验证是否成功.
printf("Can't get memory...");
exit(0);
}
return p;
}
void Test(void){
char *str=NULL;//
str=GetMemory();//改为把返回的指针赋给str
strcpy(str,"hello world");
printf(str);
free(str);//要释放内存.
}
这两种改法都可以用下面的代码调用验证:
void main(void){
Test();
printf("\n");
}
方法1:
void GetMemory(char **p){//要改为指针的指针.
if((*p=(char *)malloc(100))==NULL){//要验证是否成功.
printf("Can't get memory...");
exit(0);
}
}
void Test(void){
char *str=NULL;//
GetMemory(&str);//中间不能有=号,应改为GetMemory(&str);
strcpy(str,"hello world");
printf(str);
free(str);//要释放内存.
}
方法2:
char *GetMemory(void){//要改为返回指针.
char *p;
if((p=(char *)malloc(100))==NULL){//要验证是否成功.
printf("Can't get memory...");
exit(0);
}
return p;
}
void Test(void){
char *str=NULL;//
str=GetMemory();//改为把返回的指针赋给str
strcpy(str,"hello world");
printf(str);
free(str);//要释放内存.
}
这两种改法都可以用下面的代码调用验证:
void main(void){
Test();
printf("\n");
}
全部回答
- 1楼网友:高冷不撩人
- 2021-03-16 21:44
可以对单位处3000元以上3万元以下的罚款。经县级以上人民政府财政部门责令限期改正而逾期未改正的,由市级人民政府财政部门予以通报。
应改为:由县级以上人民政府财政部门责令限期改正,可以对单位并处三千元以上五万元以下的罚款;对其直接负责的主管人员和其他直接责任人员,可以处二千元以上二万元以下的罚款;属于国家工作人员的,还应当由其所在单位或者有关单位依法给予行政处分:
有前款所列行为之一,构成犯罪的,依法追究刑事责任。
会计人员有第一款所列行为之一,情节严重的,由县级以上人民政府财政部门吊销会计从业资格证书。有关法律对第一款所列行为的处罚另有规定的,依照有关法律的规定办理。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯