C语言中如给一个int型的变量赋值int a=4;和int a;a=4;两种方式有区别吗?

虽然2种方式都能赋值,但在实际处理过程中是否有什么区别,求解答,谢谢!
我是这样想的,int a=4;是在栈中分配给a一个地址并将4放到这个地址上存储;
int a;a=4;事先给a分配了一个地址,此时该地址上的数据未知,第二部将4赋值给a,是否需要事先将4放在常数段上?

这两种方法的结果是没有区别的,但执行过程有差别,但后者比前者耗时,所以推荐前者。至于是不是放在常数段上,那要看变量a的其他性质,如是全局变量?局部变量?再加上是自动型还是静态型,还是const等等的组合,情况略复杂些了……
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-10
第一种方法是在声明变量的同时给变量赋值,这个过程书本上有简称定义;
第二种是先声明变量,然后再给变量赋值,赋值过程就叫做定义。

变量是先声明,后定义的。这两种方式没有太大区别,所占用的内存一样。但是就简洁性而言第一种方式最好,而且安全,不用担心变量声明后没有对其进行定义而产生的不可预料错误。

个人建议使用第一种方法,避免掉进内存陷阱。本回答被提问者和网友采纳
第2个回答  2014-02-10
没有区别,只是第一个给a了一个默认值追问

我是这样想的,int a=4;是在栈中分配给a一个地址并将4放到这个地址上存储;
int a;a=4;事先给a分配了一个地址,此时该地址上的数据未知,第二部将4赋值给a,是否需要事先将4放在常数段上?

追答

不需要讲a放到常数段上....只是第二种你没有给a赋值,然后又输出a的话,a的值就是随机的

第3个回答  2014-02-10
没有区别 。
第4个回答  2014-02-10
前一种执行一步,后一种执行二步
别的区别没有
相似回答