为什么能够改变实参的值?
各位达人
指针作形参为什么能够改变main中的实参的值,小弟不理解。请指教越详细越好!
#include <stdio.h>
void swap(int *,int *);
main()
{
int a=10,b=11;
swap(&a,&b);
printf( "%d--%d ",a,b);
getch();
}
void swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
[解决办法]
主程序已经把a,b变量的地址告诉行参了,当然该函数可以改变a,b的值了.
#include <stdio.h>
void swap(int *,int *);
main()
{
int a=10,b=11;
swap(a,b);
printf( "%d--%d ",a,b);
getch();
}
void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
} 这样就不能改变a,b的值。
但是注意一点的是swap函数是无法改变a,b变量的地址值。
所以说函数行参是无法改变对应实参变量的值,但必须看清参数的数据类型,
此处参数是指针而不是a,b变量本身的内容。