笔试题

zym1110 2002-12-16 04:29:54
1、请问下面两种if 语句的写法那种更好?
int n;
if (n==10)
if (10==n)
2、下面的代码有什么问题?
char* DoSomething()
{char str[16];
...........
return str;
}
3、下面的代码有什么问题?
char* _strdup(const char* strsource){
static char str[MAX];
strcpy(str,strsource);
return str;
}
4、下面的代码有什么问题?
void test(void){
char* str=(char*)malloc(100);
strcpy(str,"hello");
free(str);
if (str!=NULL){
strcpy(str,"world");
printf(str);
}
}
...全文
16 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuperFC 2002-12-17
  • 打赏
  • 举报
回复
同意
第一题规范性问题

第二题是检查问题

第三题同意 gosirius(必宿五) 解释得很清楚了;静态变量的分配是在全局数据区,它的scope 是file,而不是function;
所以不存在什么临时变量的释放问题;

第三,四题同意 ouygg(痞子酷)

zym1110 2002-12-17
  • 打赏
  • 举报
回复
up
alexzhouzhou 2002-12-16
  • 打赏
  • 举报
回复
3。内存泄漏
Qtree 2002-12-16
  • 打赏
  • 举报
回复
1:用 10==n 防止出现 n=10 的错误
2:str 是局部的 ,出了{}就会被释放 所以return 他的地址 会出问题
3:让我想一想
4:当free(str)后 ,动态分配的内存会被收回,再给他赋值会产生意想不到的问题,所以会有危险。情况有点象第二题
chinacharli 2002-12-16
  • 打赏
  • 举报
回复
4的确有野指针的问题
3没有作长度检查
zjw2723114 2002-12-16
  • 打赏
  • 举报
回复

--------------------------------------------------
第一题:if(10==n)要好
原因,可以避免粗心把==写成=,这样编译会报错,因为不能给一个常量进
行赋值
第二题:危险:str是一个局部变量,在离开该函数,所指内存会释放
--------------------------------------------------
ywchen2000 2002-12-16
  • 打赏
  • 举报
回复
学习
zym1110 2002-12-16
  • 打赏
  • 举报
回复
UP
xiepengtao 2002-12-16
  • 打赏
  • 举报
回复
4.
free(str);
后,str有地址,但是没有了存储空间,成为一个野指针。后边在str的地址写入内容。有可能导致修改其它内容。
leolance 2002-12-16
  • 打赏
  • 举报
回复
3.strsource没有作长度检查
4.char* str=(char*)malloc(100);
应该先memset为null
痞子酷 2002-12-16
  • 打赏
  • 举报
回复
3. strcpy(str,strsource);
如果str的内存空间不过,呵呵~~~~~
4. free(str); //释放空间,此时str不一定为NULL,而是为一个随机数.
if (str!=NULL){
strcpy(str,"world"); //没有空间分配,呵呵~~~~
printf(str);
}
gosirius 2002-12-16
  • 打赏
  • 举报
回复
3.我觉得第一从思路上static变量在对函数的不同调用期间应该是保持原值不变,函数在设计的时候很可能利用了这点,而返回static指针使外部可以改变变量的值,可能是函数的工作出问题。第二如果返回static指针的函数在windows下的dll库中,还可能发生在dll库释放后,仍是用指针访问static变量,这时变量已经不存在了。不知是否正确。
summerICEREDTEA 2002-12-16
  • 打赏
  • 举报
回复
1:从易读性来说 第一种好 如果是可靠性的话 第二种比第一种保险 不会出现赋值的情况。
2:str只是个局部变量 return str很容易引起找不到内存地址问题
3 4 不清楚
请大家指教

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧