c语言函数调用实参到形参传递的是值,那地址是怎么传递的?
展开全部
首先,是实参调用形参.你说的地址传递其实和值传递差不多.比如max( &a, &b );这是实参int max( int *p, int *p2 )这是形参.比如实参,&a和&b都是取a和b的地址,又因为max()函数的形参是*p和*p2( *p和*p2被声明为整型的指针 ),因为指针是存地址的,所以把a和b的地址赋给p和p2.下面是一个把a和b的值交换的程序./*
============================
程序名:max.c
目的:用地址交换两个变量的值.
============================
*/#include <stdio.h>int max( int *p, int *p2 ); /* 声明函数 */ int main( void ){int a, b;scanf( "%d", &a ); /* 输入两个变量的值 */
scanf( "%d", &b );
printf( "a = %d, b = %d\n", a, b );return 0;}int max( int *p, int *p2 ){int temp; /* 定义一个临时变量,为的只是交换 */temp = *p;*p = *p2;*p2 = temp; /* 己交换 */}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询