首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么能够改变实参的值?解决方案

2012-03-09 
为什么能够改变实参的值?各位达人指针作形参为什么能够改变main中的实参的值,小弟不理解。请指教越详细越好

为什么能够改变实参的值?
各位达人
      指针作形参为什么能够改变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变量本身的内容。

热点排行