如何理解C语言中的值传递和引用传递?
1、时间的代码如下:通过互换值进行设置,下面的代码可以运行:
#include<stdio.h>#include<stdlib.h>void swap(int i,int j){ int temp=i; i=j; j=temp; }main(){ int i=3; int j=5; swap(i,j); printf("i的值为:%d\n",i); printf("j的值为:%d\n",j); system("pause"); }

2、main方法中:int i=3,这句话在内存中开辟了一个空间并且保存了3
同理int j=5;
在swap方法中,swap(i,j)中的i,j都是从主函数中传过来的值,并且它们也创建了两个内存空间,所以它们只是在swap方法中进行了调换对main方法中的i,j没有影响。
这种叫做值传递。

3、void swap(int *p,int *q){ int temp=*p; *p=*q; *q=temp; }main(){ int i=3; int j=5; swap(&i,&j); printf("i的值为:%d\n",i); printf("j的值为:%d\n",j); system("pause"); }

4、int i,j;都开辟了自己的空间,并且地址不同,swap中创建p,q的时候又创建了两个空间,p中存放的是i的地址,q中存放的是J的地址
*p中表示的是i的值,*q中存放的是j的值,所以其改变能够改变i,j的值

5、引用传递:就是在传递的时候传递过去的是对象,把引用传过去之后,然后再修改值,就可以完成交换,其实在转换的过程中修改的是地址值。
其实引用传递也是一个值传递,只不过其传递的是一个地址。
