Initialize all Variables
You shall always initialize variables. Always. Every time. gcc with the flag -W may catch operations on uninitialized variables,but
it may also not.Justification
More problems than you can belIEve are eventually traced back to a pointer or variable left uninitialized.
如果变量没有合适的初始值,那么保留它没有值更好.这样编译器可能会在未初始化的情况下读取它.我不是在谈论T * p = NulL,这是一个陷阱表示,可能(或可能不是)非常有用,而是int personal_number = 0 / *但是0是有效的个人号码!! * /
为了澄清,为了回应abasu的评论,我的例子是试图说明没有可用无效值的情况.我已经问了question并且回答说使用不可能的值来标记错误或其他条件是很棒的.但情况并非总是如此.例子很多:8位像素值,速度矢量等.
我总是可以看到“始终初始化变量”的一个有效替代方法是:
//logical place for declarationsT a;/*code,for example to set up the environment for evaluating a*/a = fooForA();/*more code*/fooThatUsesA(a);
这样,如果忘记了初始化,就会出现警告并修复错误,删除警告.
解决方法 所有整数都是有效的个人号码吗?如果没有,则使用无效值初始化personal_number.
如果它们是,那么即使您没有自己初始化personal_number,它仍然保留一个有效的个人号码值 – 但该值是未知的.所以无论如何将它初始化为0 – 你没有引入问题(之前的有效数字,之后的有效数字),唯一的区别是这个数字现在已为您所知.
当然,在这两种情况下,最好不要使用整数文字进行初始化,而是做类似这样的事情:
enum { INVALID_PERSONAL_NUMBER = -1 }int personal_number = INVALID_PERSONAL_NUMBER;总结
以上是内存溢出为你收集整理的c – 始终初始化所有变量全部内容,希望文章能够帮你解决c – 始终初始化所有变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)