C语言中形参和实参详解及实例代码
在C语言中,函数定义时会包含一些参数,用于接收调用该函数时传入的实参,在函数体内进行处理。这些参数即为形参。
形参的定义形似变量定义,包含变量类型和变量名,如下所示:
int add(int a, int b) {
// 函数体
}
其中,形参a和b分别表示传入的两个整数。
在函数调用时,我们需要传递一些值作为实参,实参要与形参类型相匹配、数量对应。实参可以是常量、变量、表达式等。如下所示:
int sum = add(3, 5); //将3和5作为实参传入,返回值为8
int x = 4;
int y = 6;
int result = add(x, y); //x和y作为实参传入,返回值为10
在函数调用时,我们可以通过按值传递、按地址传递等方式将实参传入函数。
按值传递
按值传递即将实参的值复制一份,传递给形参使用。在函数体内,形参是以新变量的形式存在的,对形参的修改不会影响实参。
void swap(int a, int b) {
int tmp = a;
a = b;
b = tmp;
}
int main() {
int x = 1;
int y = 2;
swap(x, y);
printf("x=%d, y=%d\n", x, y); //输出结果为:x=1, y=2
}
在上面的例子中,调用swap函数时传入了实参x和y,但在函数体内交换a和b的值并不会影响x和y的值,因为交换的是形参的值。
按地址传递
按地址传递即将实参的地址传递给形参使用,形参成为了实参变量的别名。在函数体内,形参与实参指向同一个变量,对形参的修改会直接影响实参。
void swap(int *a, int *b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
int main() {
int x = 1;
int y = 2;
swap(&x, &y);
printf("x=%d, y=%d\n", x, y); //输出结果为:x=2, y=1
}
在上面的例子中,调用swap函数时传入了实参x和y的地址,因此在函数体内修改形参a和b指向的变量时会直接修改x和y的值。
总的来说,我们在使用函数时要了解传递实参的方式,以及不同方式的影响。这样才能更好地理解函数的执行过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言中形参和实参详解及实例代码 - Python技术站