全部问题 > 当前问题

求解析

地址传递:原来的值变了 会改变实参的值
举个例子
#include<stdio.h>
void temp(int a,int b) 
{
int t;
t=a;
a=b;
b=t;
}
void main()
{
int a=5;int b=3;
temp(a,b);
printf("%d%d",a,b);
}
结果 a=5;b=3 并没有因为调用了函数,而变成a=3;b=5;原因就是它是函数值传递,而不是地址传递


m 2015-11-15 16:35:36

共 1 个回答

嘿嘿大人 2015-11-15 19:53:09
#include<stdio.h>
void temp(int a,int b) //自定义一个无返回值函数,并且定义形参a和b
{
int t;
t=a;
a=b;
b=t;
}//自定义函数的作用是交换两个形参的值void main()//不要加这个void,主函数没有这种写法,虽然不报错,但是这种写法是不被允许的;
{
int a=5;int b=3;//定义两个整形变量a和b,并且赋值
temp(a,b);//调用函数temp,并且确定实参是a和b
printf("%d%d",a,b);//输出变量a和b的值
}

由于形参是整形变量,所以是按值传递,形参在自定义函数中的所有操作都不会影响到实参的值;

如果形参是指针或者数组的话那就是按地址传递,在自定义函数中对形参的操作就会影响到实参;

问题来自: 形参和实参