c语言中的一些细节

 

2011 国信蓝点的软件大赛就要开始了,所以这几天都是用标准c语言规则去写一些代码。

以前都是用.cpp编译的。由于大赛严格使用的是c语言,所以编译的时候都是用.c文件。

想不到用.c写的一个对文件内容进行归类的程序,竟然错误百出。这些错误如果是写成。cpp

的话是没有任何问题的。接下来我就谈谈我遇到错误的一些细节吧。

1、函数前不要插入临时变量

2、结构体中定义了二维数组或者定义了另一个结构体数组,在定义该结构体数组变量的时候。

只能自主的分配内存空间。也就是说,只能定义指针型结构体变量。然后自主的用malloc分配空间。

上图在结构体中定义成员为二维数组或结构体数组,在声明变量的时候用的是数组结构体。运行结构如下:

 

正确的做法应该是:

 

如果结构体中没有二维的指针或者数组结构体那么程序就可以这样写。

对于c语言最好在开头都定义好变量,如果在中途定义临时变量。会莫名奇妙的出错。

写惯了c++这种情况真的不爽啊。

 

 最新解释:原来栈的存储区域分配空间是有限的,vs2010默认小于1M。当分配

空间大于1M是就会造成错误。

最后还有一个很奇怪的现象。

如果把函数改为memset(tempname, 0,256);memset(tempname, 0, 256);就不会出错。

原因可能就是有关内存分配方面、结构体怎么对齐。这种情况本人也很纳闷。希望有哪位高人指点一下。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值