模块之间的数据传递

模块之间的数据传递

ID:39595339

大小:339.12 KB

页数:31页

时间:2019-07-06

模块之间的数据传递_第1页
模块之间的数据传递_第2页
模块之间的数据传递_第3页
模块之间的数据传递_第4页
模块之间的数据传递_第5页
资源描述:

《模块之间的数据传递》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、模块之间的数据传递主讲:唐郑熠学院:信息科学与工程学院内容提要参数传递函数返回值传递结构体动态内存分配变量的作用域C语言中的存储类型分为:auto、register、static、extern,在函数内部定义的变量称为局部变量,在函数外部定的变量称为全局变量全局变量具有全局作用域,只需在一个源文件中定义,就可以作用于所有的源文件(需用extern声明)静态全局变量只能在定义的源文件内部使用,不能被其它源文件使用变量的作用域局部变量默认为auto,具有局部作用域,只在定义的函数内部有效,在函数执行时分配空间,函数执行结束后即失效,且所占空间

2、被回收静态局部变量具有局部作用域,只在定义的函数内部有效,但只被初始化一次,且在程序运行过程中始终存在register只能修饰局部变量,与auto型的局部变量的唯一区别在于所占空间的区域不同全局变量不同的函数之间可以通过全局变量传递数据inta[10];voidfun_1(){inti;for(i=0;i<10;i++){scanf(“%d”,&a[i]);}}voidfun_2(){inti,s;s=0;for(i=0;i<10;i++){s+=a[i];}}全局变量不同的函数之间可以通过全局变量传递数据这种方法的缺点是会降低模块本身的独立性,

3、提高模块之间的耦合性参数传递函数的参数传递有两类:传值和传址实际上,传址传的是地址值函数定义时的参数称为形参,函数调用时的参数称为实参实参有实际值,形参在被调用时接收实参的值参数的传递时单向的:实参形参参数传递传值abvoidfun(inta,floatb)11{……}intmain()12.5{inta=1;floatb=2.5;12.5fun(a,b)}ab参数传递传址pqvoidfun(int*p,float*q){……}&a&bintmain()&a&b{inta=1;floatb=2.5;fun(&a,&b)12.5}ab参数传递

4、传递一维数组voidfun(int*array)array{……}aaintmain(){inta[5];afun(a)}参数传递形参的语法形式voidfun(intarray[])voidfun(intarray[])实参的语法形式(已有定义:inta[5])fun(a)fun(&a[0])fun(&a[i])fun(a+i)参数传递传递二维数组二维数组的数组名是一个行指针(二级指针)voidfun(intarray[][3])array{……}aaintmain(){inta[2][3];afun(a)a+1}array+1参数传

5、递形参的语法形式voidfun(intarray[2][3])voidfun(intarray[][3])voidfun(int(*array)[3])实参的语法形式(已有定义:inta[2][3])fun(a)fun(&a[0])返回值返回变量值intfun()b{2intb=2;returnb;}2intmain(){inta;a=fun();2}a返回值返回地址动态分配的空间静态局部变量返回自动类或寄存器类局部变量的地址是没有意义的,因为它们在函数执行结束就销毁了返回值int*fun()aint*fun(){{ainta=1;

6、1staticinta=1;1return&a;return&a;}}intmain()&aintmain()&a{&a{int*p;int*p;&app=fun();p=fun();p…………}}传递结构体结构体变量作为参数t.at.bt.ctypedefstruct{voidfun(STRUCTt)12.5ainta;{floatb;……tcharc;}}STRUCT;1,2.5,aintmain(){sSTRUCTs={1,2.5,‘a’};12.5afun(s);s.as.bs.c}传递结构体结构体变量地址作为参数ptypedefs

7、truct{voidfun(STRUCT*p)&sinta;{floatb;……charc;}}STRUCT;&sintmain(){sSTRUCTs={1,2.5,‘a’};12.5afun(&s);s.as.bs.c}传递结构体结构体变量作为返回值voidfun()t.at.bt.ctypedefstruct{{58.5xinta;STRUCTt={5,8.5,‘x’};floatb;returnt;tcharc;}}STRUCT;5,8.5,xintmain(){sSTRUCTs;12.5as=fun();s.as.bs.c}传递结

8、构体返回自动类或寄存器类结构体变量的地址同样是没有意义的,因为在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。