C语言函数传递中形参的变化不会改变实参的值 |
您所在的位置:网站首页 › 修改mysql参数选项组中的参数值不会影响 › C语言函数传递中形参的变化不会改变实参的值 |
如题,C语言在函数间传递参数时,形参的变化是不会改变实参的值的!!! 如: include void main(){ void swap(int,int); int a,b; scanf("%d,%d",&a,&b); swap(a,b); } void swap(int a,int b){ int temp; temp = a; a = b; b = temp; } 因为形参与实参的内存单元不同,所以,只是值传递,并不能直接进行值修改。 为此,有两种方法可以解决这个问题: 一个是传递指针,另一个是用return返回值到该变量。 传递指针: void main(){ void swap(int *,int *); int a,b; scanf("%d,%d",&a,&b); swap(&a,&b); } void swap(int * a,int * b){ int temp; temp = *a; *a = *b; *b = temp; } 使用return返回值: 因为此处定义了两个变量,C语言并不支持多值返回,所以可以返回指针,具体可以是返回结构体,或者是数组。 返回结构体: struct test{ int a; int b; }; void main(){ struct test aa; struct test swap(int,int); scanf("%d,%d",&aa.a,&aa.b); aa = swap(aa.a,aa.b); printf("%d,%d",aa.a,aa.b); } struct test swap(int a,int b){ struct test aa; aa.a = b; aa.b = a; return(aa); } 返回数组指针: void main(){ int a[2]; int *p; int * swap(int,int); scanf("%d,%d",&a[0],&a[1]); p = swap(a[0],a[1]); a[0] = p[0]; a[1] = p[1]; printf("%d,%d",a[0],a[1]); } int * swap(int a,int b){ int c[2]; c[0] = b; c[1] = a; return(c); } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |