首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求C语言主程序与函数调用之间的有关问题,求解

2014-01-14 
求C语言主程序与函数调用之间的问题,求解! f(int b[], int x){x++b[0]+2b[1]+3}main(){ inta[2]{2,4

求C语言主程序与函数调用之间的问题,求解!
 f(int b[], int x)
{   
 x++;
b[0]+=2;
b[1]+=3;
}

main()


int  a[2]={2,4}, x=5;
f (a,x); 
 printf(“%d,%d,%d\n”, x,a[0],a[1]);
}

计算机运算出来的是 5,4,7,我就弄不明白,这个是怎么得出来的?望高手解释,谢谢!
5我认为就是主程序定义的那个x,其他就不知道了。
[解决办法]
C 语言的参数都是传值得,f 里面的 x 只是 main 中 x 的值得一个拷贝,不是同一个变量
[解决办法]

引用:
那4,7是怎么得来的呢?回楼上的.

看看函数中按值传递和按地址传递的区别
[解决办法]
第一个参数是指针,第二个参数是一个传而已

那么显然第一个参数指向的内容在传入函数里是可以被改变的,
第二个参数改变就无效了。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

那4,7是怎么得来的呢?回楼上的.

看看函数中按值传递和按地址传递的区别


我对此程序的理解如下:
首先,main中的5此值赋予f中的x,因为是x++,不是++x,所以结果是5,
a[0],a[1]的值 初始为 2,4;是不是要调入 f 中进行计算?


yes:
b[0]+=2; //2+2=4
b[1]+=3; //4+3=7
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

那4,7是怎么得来的呢?回楼上的.

看看函数中按值传递和按地址传递的区别


我对此程序的理解如下:
首先,main中的5此值赋予f中的x,因为是x++,不是++x,所以结果是5,
a[0],a[1]的值 初始为 2,4;是不是要调入 f 中进行计算?

...........结果为5和x++和++x没啥联系
[解决办法]
呵呵,弄明白就好了
[解决办法]
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试是程序员必须掌握的技能之一。

[解决办法]
传数组进去相当于传了地址,x是传了值进去,对x本身没影响的。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

那4,7是怎么得来的呢?回楼上的.

看看函数中按值传递和按地址传递的区别


我对此程序的理解如下:
首先,main中的5此值赋予f中的x,因为是x++,不是++x,所以结果是5,
a[0],a[1]的值 初始为 2,4;是不是要调入 f 中进行计算?

...........结果为5和x++和++x没啥联系

++ 楼主不要被误导了
[解决办法]
引用:
那4,7是怎么得来的呢?回楼上的.


数组传进去的是地址,通过地址来操作内存上的内容,从而到达了修改内容的目的!
所以数组的值发生了改变

而第二个参数传的值而已,而且还是拷贝的一份的值!所以操作的不是x本身,而是拷贝的一份!
实际的x没有发生改变!

热点排行