c语言中的一些细节

本文探讨了在使用C语言进行程序设计时遇到的问题,特别是关于结构体中定义二维数组或结构体数组时的内存分配问题。文章还讨论了栈空间限制导致的错误,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

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

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

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

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

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

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

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

 

正确的做法应该是:

 

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

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

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

 

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

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

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

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

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

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值