问几个简单的问题

csw 2001-05-07 07:47:00
1。下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么?
int n;
if (n == 10) // 第一种判断方式
if (10 == n) // 第二种判断方式

2。下面的代码有什么问题?并请给出正确的写法。
try
{
FILE* fp = fopen("c:\\1.dat");
if (NULL != fp)
{
...
}
fclose(fp);
}
except(EXCEPTION_EXECUTE_HANDLER)
{
}
3。下面的代码有什么问题?
char *_strdup( const char *strSource )
{
static char str[MAX_STR_LEN];
strcpy(str, strSource);
return str;
}

4。下面的代码有什么问题?
void DoSomeThing(...)
{
char* p;
...
p = malloc(1024); // 分配1K的空间
if (NULL == p)
return;
...
p = realloc(p, 2048); // 空间不够,重新分配到2K
if (NULL == p)
return;
...
}



...全文
94 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
brucegong 2001-05-08
  • 打赏
  • 举报
回复



hello_wyq(半瓶墨水) :
不过第二种方法的确不错。


hello_wyq 2001-05-08
  • 打赏
  • 举报
回复
Phourm() :不要迷信某某某,它的方案也未必是最好的!
brucegong 2001-05-07
  • 打赏
  • 举报
回复



第一个问题:前面的人已经讲了,没问题;
第二个问题:如果真是没有成功打开文件,你对一根空指针进行关闭操作并不安全;
第三个问题:不要拿局部变量的地址返回。static是在全局堆里面分配空间,单本质上还是局部变量;你的操作是有隐患的;(我没有测试是否可以运行)
第四个问题:不用的空间应该回收。参考操作系统里面的内存分配算法,你的操作明显在“吃”内存。



Phourm 2001-05-07
  • 打赏
  • 举报
回复
第二种好!微软近来的一些例子就是这样写的!
fir2000 2001-05-07
  • 打赏
  • 举报
回复
1,显然是第二种好.提倡第二种.这样不会出现难以发现的错误,比如你掉了一个=.
2,
_try
{
FILE* fp = fopen("c:\\1.dat","w+");
if (NULL != fp)
{
return;
}
fclose(fp);
}
_except(EXCEPTION_EXECUTE_HANDLER)
{
return;
}
_try,_except不是标准c的内容.
3,这个不应当有什么问题的.
4,是不是malloc之后要强制转换呀?其他好像也没有问题的.
hyqryq 2001-05-07
  • 打赏
  • 举报
回复
4.char* p; p是个局部变量,出作用域后将导致内存泄漏。
  • 打赏
  • 举报
回复
我也是初学者
第二个问题:好象定义指针时不能初始化吧。
hyqryq 2001-05-07
  • 打赏
  • 举报
回复
2. 没有指定读写方式。

fp=fopen("c:\\1.dat","r");
Nicrosoft 2001-05-07
  • 打赏
  • 举报
回复
1、第二种判断好,这样,即使将 == 写成 = ,也可有编译器差错

69,371

社区成员

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

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