C语言值传递和地址传递 不明白

Python011

C语言值传递和地址传递 不明白,第1张

1)void swap(int a, int b)的参数属于值传递;

2)值传递需要一个中间变量,以你的程序为例:

swap(x,y)

它的实际过程是,先分配两个临时变量,a和b,这两个变量和传入的x、y占用不同的地址空间,程序先将x和y的值复制给a和b:

swap(a = x, b = y),之后在swap中所有的操作都是针对a和b进行的,与x和y无关,所以x和y的值在swap执行后依然保持不变。

3)地址传递也需要一个中间变量,但是这个中间变量保存的是地址,对于C语言你就需要用到指针变量,它可以保存一个普通变量的地址,通过改变这个地址里的内容就可以改变原变量的值。对于你的程序,如果想在调用swap后,x和y的值被改变,你需要定义成下面的样子:

#include <stdio.h>

void swap(int *,int *)//参数里的*号表示指针

void main()

{

int x=10,y=20

printf("(1)a=%d y=%d\n",x,y)

swap(&x,&y)//x和y按地址传入

printf("(4)x=%d y=%d\n",x,y)//按地址传入,x和y的值被swap改变

}

void swap(int *pa, int *pb)//函数形参变成指针

{

int t

printf("(2)a=%d b=%d\n",*pa,*pb)//访问指针的内容需要在指针前加*号

t=*pa

*pa=*pb

*pb=t

   printf("(3)a=%d b=%d\n",*pa,*pb)

}

}

3)关于指针的详细内容,由于篇幅有限,请参看C语言资料的相关章节。

1、多文件之间,一般很少有单个参数传递,那个交集太大,不容易移植,各个文件之间最好是越独立越好。

2、数据传递,一般是通过函数接口来实现的。就是用另一个C文件中的某一个功能的时候,可以通过include它的头文件,然后直接调用它的接口函数,这样目的就达到了,这样实现的好处就是易于移植。

定义变量的时候,直接等于一个函数返回值即可。

一、在C语言中,定义变量同时,给变量赋值,称为初始化。

二、初始化形式为

TYPE var_name = INIT_VALUE

其中TYPE为变量类型, var_name为变量名, INIT_VALUE为初始值。

三、要用函数返回值作为初始化,那么只需要把函数调用写在INIT_VALUE区域即可。 示例代码如

#include <stdio.h>#include <time.h>int main(){    int cur_time = time(NULL)//以time函数返回值作为cur_time的初始化值。    printf("当前POSIX标准时间为:%d\n",cur_time)//使用cur_time.    return 0}