
正文
c语言在函数中可以改变实参,c语言函数怎么改变实参的值
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
...函数调用中什么情况时,形参的改变会影响实参改变,什么情况下不影响...
这是直传递。开辟新的存储空间。实参的值传给形参。地址不一样所以对形参的操作不改变实参。
形参和实参如果都是地址(即指针)时,会发生改变形参即可改变实参的情况,因为这时形参和实参实际上是对应同一段内存的数据。
实参传给形参时,有两种传递方式,一种是值传递,一种是引用型传递。值传递时,形参的改变并不会反馈给实参,实参并不改变;引用型传递时,形参的改变,会反馈给实参,实参也会改变。引用型传递需要在形参名前面加“&”。
相关问答
Q1: C语言的一道单选题,求解?
1、A选项:必须在主调函数中说明此数组的大小,不一定例如传递一个char类型的字符串,就不需要。所以A是错的。B选项:实参数组类型与形参数组类型可以不匹配。实参和形参,类型顺序必须一致,不然调用不了。B错 C选项:在被调用函数中,不需要考虑形参数组的大小。
2、C 1 D 0 解析: 因为(x||y)&&(wa))正确,所以赋给W的值为1(表示正确),如果前面的式子错误则返回的值为0(表示错误) 。 以下列出C语言常量中,错误的是__B___。
3、答案是D。分析:按%d%d%d格式输入时,要求用空白(空格、换行等)作为分隔符。当输入3 4,5时,因为3 4符合输入格式的要求,所以会将3赋值给a,4赋值给b。
4、正确答案应该是B.15。这里考察的重点是符号常量的使用。主函数中出现符号常量FUN(x,y) 则直接用 (x)(y)?(x):(y)替代即可。本题中:k=10*FUN(i,j);可以看作:k=10*(i)(j)(i):(j);而i=10,j=15 所以按照运算优先级有:k=10015?10:15;结果显然是15。故选择B。
5、C.C语言提供了功能齐全的函数库,有良好的通用性和可移植性 D.C语言生成目标代码的质量高,程序执行效率高 43.C语言提供合法的数据类型关键字是( B)。A.Double B.short C.integer D.Char 44.C语言的标识符只能由字母、数字和下划线三种字符组成,且首字符( A)。
6、正确答案是B。A和D都很明显,c 不在赋值符号最左边,所以不可能正确把值赋给a,b。对于c,是一个逻辑与表达式,一旦运算符&&前面值为假(值为0)则不会继续运算后面部分,这里c为0 ,所以后面 b = c不会执行。综上,答案为B。
Q2: c语言如何用自定义函数改变参数的值
可以传递指针作为参数。如:使用swap(a,b)实现交换a、b两个实参的值。
void changes(float& x1,float& y1)下面的不便,这样就不是传值了。而是传递引用。
直接在函数里使用全局变量就可以了。因为是全局变量,所以一般就不用传参了。
void bar(int p) 是拷贝传递,函数内部的p与外面传入的j只是值相同,并不是同一个内存空间,你在函数内部赋值其实一点作用都没有。void fun(int *p) 传递的是指针,你也可以连接是拷贝传递,但传递的是指针,所以在里面对*p操作就是于直接对传入的j的内存空间进行操作。
关于c语言在函数中可以改变实参和c语言函数怎么改变实参的值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







