① c语言简单判断题:在标准C语言中,函数参数传递是单向传递,即由实参传递给形参.
值传递。
实参与形参数据传递有两种方式:值传递与地址传递。
地址传递的形式为
int
&a=b;
也就是我们所说的引用,但引用只有c++中有,所以c语言都是值传递的。
有些人有误解:认为c语言的int
*p=&a;不也是按地址传递吗?其实不是这样的。
深入理解值传递与地址传递就会发现:
值传递是:把实参的值传给一个变量(形参)。所以int
*p=&a也是把a的地址值传给了指针变量p
地址传递是:直接把地址传进来,没有赋给任何变量,这样在函数体内对形参的操作也就是对实参地操作。有这种功能的也就是引用(&)了。
② C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是什么
函数只有两种传递方式:
1、值传递,又称单向传递,只能把实参数值传给形参 ,形参最后的结果不影响实参(形参改变大小 ,实参大小不变)。
2、址传递,通过指针,把实参的地址给形参,形参的大小可以影响实参。
(2)c语言单向传递是什么意思扩展阅读:
实参变量和形参变量之间的调用过程
1、函数的形参列于函数声明中,在函数定义的函数体内使用,在未出现函数调用时,形参不占内存中的存储单元。
2、将实参的值传递给形参,当函数被调用时,实参列在函数名后面的括号里,执行函数调用时,实参被传递给形参。
3、在执行函数期间,由于形参已经有值,可以利用其进行相关运算。
4、通过return语句将函数值带回到主调函数。
5、调用结束,形参单元被释放。实参单元仍保留并维持原值(值传递)。
③ c语言,关于形参实参单向值传递!
分两种情况给你对比一下
函数形参用普通变量,当函数被调用的时候,实参的值被赋值给了形参,函数被调用的时候开辟了内存空间给形参,也就是数据被复制了,然后函数开始处理形参的数据,这个时候和实参的数据是没有任何关系了。当函数结束的时候形参的内存空间是要被释放,或者说删除的,所以对实参啥也没干,只是拿了实参的数据复制了一份,然后对复制的那一份算的很起劲,结果最后删除了,啥也没干。
函数形参用指针,当函数被调用的时候,实参指针,也就是把地址复制了一份给形参,但是函数中我们用取内容符号'*'对形参指针所指的内容,同时也是实参指针所指的同一份内容进行处理,函数结束的时候形参指针的值是被释放了,可是形参指针,同时也是实参指针所指的内容还在。
感觉讲的蛮清楚了,不懂再追问。
④ c语言指针为什么形参q1跟q2交换了,实参p1和p1也交换了,不是单向传递的吗
C语言的“单向传递”是指函数实参值传递给形参值,不能反过来传递。
但是,在这个题目里,你把a和b的地址传递给swap函数的两个形参,因此调用swap(p1,p2);之后,swap的形参q1指向a,q2指向b,互换q1和q2所指向变量的值,自然会互换a和b的值。
这中间没有涉及反过来(形参值传递给实参值)的传递方式,仅仅在调用swap函数时,p1值传递给q1,p2值传递给q2,而指针的值就是它们所指向变量的地址。
⑤ c语言中,实参向形参传递时,什么时候用单向值传递,什么时候用地址传递
C语言在形参和实参之间传递的不仅是值传递,也包括地址传递的。
细节如下:
C语言函数参数传递包括按值传递和按地址传递两种;
当形式参数是数组、指针时都是使用的按地址传递。
⑥ c语言 max函数
max里的叫形参,可以随便用哪个都一样的,大概你是新手,不知道什么是形参和实参吧~
形参与实参的区别:
高级语言在设计程序模块时,模块名定义后,紧跟其后所定义的参数(括号内)被称为形参(也称虚参)。当该模块被调用时,在主调模块中,出现在被调用的模块名后的参数被称为实参。实参代替虚参的过程被称为虚、实结合,也称换参。多数高级语言的换参是由编译系统来完成,比如C语言和FORTRAN语言亦是如此。BASIC语言的换参则是由程序设计人员来完成的。如果只允许实参向虚参传递,则被称为“单向传递”,C语言的变量类虚、实结合即是“单向传递”。如果同时允许虚参向实参传递,这种传递被称为“双向传递”,FORTRAN
语言定义的子程序即是如此。
当C语言的形参为数组时,形参不另辟存储单元,形参与实参共用内存存储单元。这样,可以节省内存。
C语言在定义函数的同时,对于有参函数,也同时定义了形参。在调用该函数的同时,也指明了实参。实参与形参在内存分别占有两套不同的存储单元(数组除外),但是形参只有在函数被调用过程中才分配存储单元,调用结束后形参占用的单元被释放。数组元素作为实参时,也做为变量来处理。
⑦ C语言判断题:在标准C语言中,函数参数传递是单向传递,即由实参传递给形参.
C语言中,举个例子swap(int a,int b)函数。你的main()函数中调用swap(x,y)。是把x,y的值传过去,传给a,b后。x,y和a,b的联系就断了。所以叫做单向传递。
C++有一种方式叫做引用,例如:int &i=x; 可以理解为i是x的别名,地址还是相同的。这时候在swap()函数中,x,y是真正地参与到运算中去。并把结果返回调用函数。所以这个叫做双向传递。
这是我的理解,如果不对,请见谅。
⑧ 请c语言高手们赐教:什么时候应注意函数实参河和形参的单向传递问题
C语言中有两种传递方式,一个是值传递,另一个是地址(指针)传递。
值传递就是单向传递。它只给从
实参
传递给
形参
,而形参经过改变后不会传递给实参,对
函数
而言,就是
参数
经过主调用函数传递给了
被调用函数
,而我们知道,被调用函数除了用return
语句
返回一个值外,其余的值就不可以返回了。所以说值传递是单向传递。
地址传递则解决了值传递只能返回一个值的尴尬局面。地址传递通过把传入参数的地址以指针方式传递给形参,进而直接对传入参数的内在单元进行修改,所以,这种传递方式可以彻底改变传入参数,不受被调用函数只能返回一个值的限制。
由上面,所以,当你希望通过调用函数并返回多个数值时就要用地址传递的方式,其余就可以选用值传递了。
下面这道题采用值传递显然达不到设计者的要求。
void
f(int
v,int
w)
{
int
t;
t=v,v=w,w=t;
}
main()
{
int
x=1,y=3,z=2;
if(x>y)
f(x,y);
else
if
(y>z)
f(y,z);
else
f(x,z);
printf("%d,%d,%d\n",x,y,z);
}
因为上面的
程序
采用了值传递,而传入的参数经f函数排大小后,不可能再传回去了,这就是单向传递。
希望,编写时候注意。