C语言中,实际参数和形式参数的区别
我知道大的概念是主函数中的参数和调用函数中的函数,而且参数可以由实参传向形参,而不能逆反传递。但是,就是搞不明白具体的情况,比如说,#include<stdio.h>vo...
我知道大的概念是主函数中的参数和调用函数中的函数,而且参数可以由实参传向形参,而不能逆反传递。但是,就是搞不明白具体的情况,比如说,
#include <stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d %d\n",*p,*q);
}
里面,哪些是形参,哪些是实参呢? 展开
#include <stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d %d\n",*p,*q);
}
里面,哪些是形参,哪些是实参呢? 展开
2个回答
展开全部
函数调用时需注意的东西。函数定义中函数首部中的参数叫形参,调用函数时使用的参数叫实参。C函数调用采用“值传递”,比如有函数:
int
max(int
x,int
y)
{if(x>y)
return
x;
return
y;
}
在调用该函数时,有max(a,b);则该调用只把a(实参)的值赋给x(形参),把b(实参)的值赋给y(形参)。函数中对x,y的任何动作不改变a,b的值。值得注意的是如果用指针作参数,虽然符合上面原则,但对形参指向的数据的更改会影响实参指向数据的值。如函数:
int
swap(int
*x.int
*y)/*交换*/
{int
temp=*x;
*x=*y;
*y=temp;
}
则调用后swap第一个实参指向数据变为原第二个实参指向的数据,原第二个实参指向的数据变为第一个实参指向数据(因为指针的值是其指向数据的地址,该形参和实参指向同一个内存地址,形参对该地址存储值的改变,当然会影响到实参指向的地址存储值),但两指针指向(指向为其值)不变(上面的原则)。
int
max(int
x,int
y)
{if(x>y)
return
x;
return
y;
}
在调用该函数时,有max(a,b);则该调用只把a(实参)的值赋给x(形参),把b(实参)的值赋给y(形参)。函数中对x,y的任何动作不改变a,b的值。值得注意的是如果用指针作参数,虽然符合上面原则,但对形参指向的数据的更改会影响实参指向数据的值。如函数:
int
swap(int
*x.int
*y)/*交换*/
{int
temp=*x;
*x=*y;
*y=temp;
}
则调用后swap第一个实参指向数据变为原第二个实参指向的数据,原第二个实参指向的数据变为第一个实参指向数据(因为指针的值是其指向数据的地址,该形参和实参指向同一个内存地址,形参对该地址存储值的改变,当然会影响到实参指向的地址存储值),但两指针指向(指向为其值)不变(上面的原则)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询