C笔记--C语言中的形参&实参
(2011-02-24 20:00:45)
标签:
形参实参c语言调用函数参变量教育 |
分类: IT科技 |
void print_time(int hour, int minute) { printf("%d:%d\n", hour, minute); } int main(void) { int h = 23, m = 59; print_time(h, m); return 0; }
相当于在函数print_time
中执行了这样一些语句:
int hour = h; int minute = m; printf("%d:%d\n", hour, minute);
main
函数的变量h
和print_time
函数的参数hour
是两个不同的变量,只不过它们的存储空间中都保存了相同的值23,因为变量h
的值赋给了参数hour
。同理,变量m
的值赋给了参数minute
。C语言的这种传递参数的方式称为Call
by Value。在调用函数时,每个参数都需要得到一个值,函数定义中有几个形参,在调用时就要传几个实参,不能多也不能少,每个参数的类型也必须对应上。
---------------分界线-------
在定义函数中指定的形参,在未出现函数调用时,他们并不占内存中的存储单元。只有在发生函数调用时,函数max中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。
实参可以是常量、变量和表达式,但要求有确定的值。在调用时将实参的值赋给形参。
在C语言中,实参向形参的数据传递是值传递,单向传递,只由实参传给形参,而不能由形参传给实参。在内存中,实参单元和形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留原值。
指针变量作函数参数也要遵循这一规则。不可能通过调用函数来改变实参变量的值,但可以改变实参指针变量所指变量的值。
函数的形参和实参具有以下特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。
函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,
以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致,
否则会发生“类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。