结构体目前的初始化方法,目前一是创建结构体是一一对应赋值,类似struct={1,2}; 二是通过调用接口memset,或者自定义函数清零。 我曾经在一本书上看到可以通过struct={}清零, 但是在使用过程中不被认可, 在网上也没有相应使用的人。不知道有没有同样看过这本书的人。
提问的目的:struct = {} 这种初始化方式在哪本书上有提到过, 是否合法, 有没有可能产生不可预期的错误。
其实测试结果肯定是已经清零的, 不过如果结构体成员是结构体的初始化,如果还是初始化为{0}, 那么就会报错missing braces around initializer。 初始化为{}是最简单的版本。 但没有在书籍上看到有={}是系统初始化的说明。我已经使用过={}可以初始化任何负责的结构体, 我现在需要的是一个可靠的理论基础,那就是 结构体 ={} 这样初始化时合法的。
追答报错?你用的什么编译器?
我用的编译器是Devc++5.5.1。
我给你的代码在这里是不会报错的。
如果你报错了,应该是c语言规范版本或者编译器版本问题。
可以去参考c99。
其实我不太懂你的意思。最好贴代码上来,以及写出你的测试平台。如果有输入输出,写出来。
参考我的回答规范。
编译参数不同, 应该算是警告missing braces around initializer。 不需要代码, 你定义一个结构体, 结构体首个成员也是结构体, struct = {0}就会报错。 我不需要纠结这个, 我想知道的其实是struct = {}这种初始化方式, 有没有那本书上明确说明这样做是合法的, 不会出现不可预期的错误。
追答你在结构体里面加了一个结构体的话,初始化方式肯定就会不同了。
struct={}我也不知道在那本书上面有写。
你要是想知道,就去看《The C++ Programming Language》6.6章。我给你连接上面有提到。
个人理解是可以的。读死书不如不读书。
写代码一定要有理有据,个人理解是不行的, 否则在项目中出现隐蔽性极强的bug, 你哭都来不及。 逻辑可以活用, 但是使用一定得规范。http://down.51cto.com/data/128409。参考微软一站式示例编程规范。