新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
答案肯定的——形参和实参可以完全一样。
为高明等地区用户提供了全套网页设计制作服务,及高明网站建设行业解决方案。主营业务为成都网站设计、做网站、高明网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
在程序执行的过程中,实参的作用域是主函数,只要程序没有停止,实参一直有效;
形参是定义函数是引入的参数,系统只在该函数被调用时分配临时内存,当自定义函数执行完后,用于临时储存形参的空间将被释放。
所以即使形参和实参的类型,名字完全一样,系统也能够把它们区分开。即可以完全一样。
注:解决这个疑问关键是要搞清楚变量作用域方面的内容。
形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。
形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。
实参:全称为"实际参数"是在调用时传递给函数的参数,即传递给被调用函数的值。
实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
扩展资料:
形参和实参的特点:
1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。
4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。
参考资料来源:百度百科-形参
参考资料来源:百度百科-实参
形参是一个变量,是在引用的函数中的变量
实参也是一个变量.是在主函数中的变量.
两个变量的使用范围不同.
形参只在子函数中使用,实参可以在主函数中使用.
上面,实参写成100,是说,在形参用100代进去.
而形参只能是一个变量,用来吸收实参传递进来的值,以输出结果.
不对,在C语言中,传值有地址传值和参数传值,参数传值只能将实参传值给形参,所以A选项正确。C语言中的外部变量是可以在函数之间传递数据的。
C语言中的自动变量是默认的变量,实际上是函数中的局部变量,所以D选项正确。全局变量一经定义都是需要分配内存单元,在程序运行过程中自始至终都会占用固定的空间,在未知内存情况下,最好不要使用全局变量。
函数调用时,值可以双向传递,并没有限制使用全局变量还是局部变量,需要根据程序的逻辑需要进行选择。
扩展资料
C语言参数传递:
1、值传递
参数传递只把变量a的值传递给了变量p,此时变量a与变量p是值相同的两个不同变量,在内存不同的两个地址中,所以对变量p赋值只是修改了变量p的值,并不能修改变量a的值。总结一句话就是:值传递不传递变量本身,只传递变量的值。
2、引用传递
与值传递不同,func的参数是int p,表示引用传递。如输出所示,通过引用传递,变量a的地址与变量p是相同的,也就是说引用传递把a的地址传给了变量p,所以对变量p进行赋值之后,变量a的值也改变了,因为变量a与变量p实际是同一个变量。
3、指针传递
指针传递,顾名思义,int *p表明p是一个指针变量,调用func(a)是把变量a的内存地址传递过去赋值给指针变量p,此时指针变量p的值是变量a的内存地址,故可看到输出p为efbfde2c(变量a的内存地址)。
*p是对指针p的值(即变量a的内存地址)进行取值,相当于*a,所以对*p进行赋值也就改变了变量a的值。
有以下区别:
1、主体不同:实参在调用有参函数时,函数名后面括号中的参数为“实际参数”。形参不是实际存在变量,又称虚拟变量。
2、目的不同:实参可以是常量、变量或表达式,无论实参是何种类型的量,在进行函数调用时,都必须具有确定的值,以便把这些值传送给形参。
需要注意当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。
实参必须要指明数据类型,而且实参和形参的数据类型必须一致。
主要原因,因为数据类型反应了数据的意义,譬如,0x3f8ccccd这个十六进制数,用int类型来描述它,它就是一个整数,用float类型来描述它则为1.1。示例代码如下。
#include stdio.h
int main()
{
int i = 0x3f8ccccd;
float f = *(float *)i;
printf("%d\t%f\n", i, f);
return 0;
}
事实上C语言中的数据类型,类似于平时说话的”语境“, 它表达了语言的意义,譬如:”谢谢你“和”谢谢你全家“, 谢谢是一个符号,但是不同的语境下有不同的意义。正是因为此,C语言不管是函数参数传递还是使用标识符进行运算,都必须指明其数据类型。