黑马程序员技术交流社区
标题:
为什么结果会发生变化?
[打印本页]
作者:
邱蚓
时间:
2014-6-18 23:36
标题:
为什么结果会发生变化?
#include<stdio.h>
void m(int a)
{
int j=10;
a=j+3;
printf("a = %d",a);
}
int main()
{
int a;
m(a);
printf("a = %d",a);
}
调用完函数之后,就没什么操作了啊。为什么第一个a等于13,第2个却不正常呢
作者:
huangqiwa
时间:
2014-6-19 00:22
楼主你好,
首先,楼主定义了一个int a
但是a没有初始化就直接传递给函数了,a的值是不确定的
当第一个a的时候,由于做了一个赋值操作,在函数内部打印出来是13
但是由于楼主用的值传递,所以a的值本身是没有变化的,所以第二句代码的a实际上值还是不确定的,所以是错的!
作者:
haohaoxuexi
时间:
2014-6-19 00:27
第二个a没有赋值
作者:
chain
时间:
2014-6-19 01:57
因为你main函数里面的变量a没有初始化就拿来使用了,由于不是全局变量,所以是乱七八糟的数值,如果是全局变量,默认为0
作者:
zys456465111
时间:
2014-6-19 07:29
本帖最后由 zys456465111 于 2014-6-19 07:30 编辑
主函数中a没有被初始化,结果不可预料。你传递的只是a的值,如果你想在调用m函数后更改a的值,可以把m的形参改为int *,并且在传递时取a的地址
作者:
Emy♪
时间:
2014-6-19 09:37
楼上都说的很对。
第一段代码块已经完成输出操作,语句已结束,因此第一段代码内的数值无法再调用。
主函数那块代码必须自己再定义a的值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2