C语言函数传递中形参的变化不会改变实参的值

阅读: 评论:0

C语言函数传递中形参的变化不会改变实参的值

C语言函数传递中形参的变化不会改变实参的值

如题,C语言在函数间传递参数时,形参的变化是不会改变实参的值的!!!

如:

include<stdio.h>

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); 
}

本文发布于:2024-02-02 21:30:42,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170688064546565.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   语言   中形参
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23