⑴ c语言 为什么实参和形参不可以同名
可以同名啊 没有什么问题
比如
void func(int arg1)
{
//donothing
}
int main()
{
int arg1=1;
func(arg1);
}
⑵ C语言函数调用问题,下面是例子。当形参和实参定义的变量重名的时候,会不会发生冲突为什么
不会冲突。
像这种简单类型的,你就直接可以认为形参就是函数的局部变量,在两个不同的函数中,其局部变量重名是不会相互干扰的。
就像上面的代码,实参是main函数的局部变量,形参是max函数的局部变量。
⑶ c语言 形参实参
实参:调用的地方使用的变量,可以是变量,也可以是常量
形参:声明函数的地方或者直接写子函数代码的地方用的
如
int f(int m) //m是形参
{
return m++; //这里m也是形参
}
main()
{
int a=5,b,c;
b=f(a); //这里a是实参
c=f(3); //这里3是实参
}
这样知道什么是实参,什么是形参了吧
其实不管哪里是实参,哪里是形参,这个定义名字真的无所谓,我就经常记不住,但是你只要知道怎么用即可
注意几个地方,对于参数
1、可以同名,但是不建议实参和形参同名
虽然同名可以使用,但是容易混淆
同名时,就是变量作用域的问题,有点难以把握,容易出错
2、实参和形参不在同一个内存空间中(除非实参用&来取地址直接传递过去,这个c中一般不讲,c++中才讲)。
这里产生的效果就是在子函数中改变形参的值,不会改变实参的值
&取地址时,那么形参需要指针形式,因为参数是要地址。因为同在一个内存地址中,所以可以改变实参的值
⑷ C语言中形参与实参名字一致运行时会怎么样
楼上说形参只是一个位置,那么实参就不是一个位置么?这样说来,任何语句其实都是一个位置对应在硬件上。所以不能那么解释。
根源在于:形参也是一个变量,但是这个变量是一个局部变量。
例如我们定义了一个全局变量,在函数内定义了一个和全局变量同名的局部变量,想必大家都清楚,局部变量会隐藏全局变量,即是说全局变量在这个函数内是不可用的。
这和形参的道理是一致的。
参数传递实际上是一个初始化的过程,就是定一个形式参数,将实际参数赋值给他。首先,类型一定要匹配。其次,同名没有关系,就好像是全局变量和局部变量的关系一样
补充:非常正确。一个函数就是一个独立的栈,每一个函数有自己的栈,只要函数销毁,局部变量就会销毁。
⑸ 在C语言中,形参名与实参名到底是一样好,还是不一样好
名字是否相同并不重要,重要的是类型必须相同。
因为,形参是所在函数的局部变量,所以形参在所在函数中会被多次使用,你需要统筹考虑。
而实参是主调函数的局部变量,是根据实际需要作为参数调用被调函数的,是否调用被调函数并不需要另外考虑实参名称,这是与形参的主要不同点。
⑹ c语言中,函数形参和实参必须相同么
可以相同但也可以不相同
在程序执行的过程中,实参的作用域是主函数,只要程序没有停止,实参一直有效;形参是定义函数是引入的参数,系统只在该函数被调用时分配临时内存,当自定义函数执行完后,用于临时储存形参的空间将被释放。所以即使形参和实参的类型,名字完全一样,系统也能够把它们区分开。即可以完全一样。
函数的形参和实参具有以下特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。
函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。
因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化
⑺ C语言中形参与实参可以同名吗
这个是完全可以的,因为变量存在一个作用域的问题,局部变量只在当前函数范围有效,全局变量在整个都有效,主要看变量的作用范围!
⑻ C语言形参和实参名可否一致
可以一致,如你所言,数组是双向,普通参数则是单向,即函数中的形参只是记号,不影响调用函数中实参数的值。
⑼ c语言:实参和形参可以同名 分别占用不同的空间 那为什么很多程序不写成同名呢
写成同名不是不可以,而是因为这样降低了程序的可读性,拿出一个变量名来,不好判断到底是那一个
⑽ C语言中形参和实参可不可以完全一样
编译器在编译时默认会做类型检查,发现行参与实参类型不一致时会提示编译警告,如果确认赋值调用不存在赋值不兼容,且不会发生溢值现象,可以使用强制类型转换,跳开编译警告。 此外,可以也在编译选项中取消类型检查。 所以,行参和实参的类型最好一致,应该不是必须。