大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
是函数参数的传递方式吧。C语言的话是:值传递和指针(地址)传递。C++的话除了C语言的两种方式外还有引用传递。
创新互联公司是一家专注于网站设计制作、网站制作和成都IDC机房托管的网络公司,有着丰富的建站经验和案例。
void called(int v){ v=2; }
void caller(){ int v=1; called(v); }
这种方式,called并不能改变caller里的v的值,因为called和caller的v分别是两个内存单元,因此只能单向的从caller到called传值,而不能从called到caller返回值。
void called(int *pv) { *pv=2; }
void caller(){ int v=1; called(v); }
这种方式,called能改变caller的值,因为值的内存由caller分配(int v=1;),而called能通过其指针改变这个内存的内容。
void called(int **ppv){ *ppv=malloc(sizeof(int)); }
void caller(){ int *pv=NULL; called(pv); }
这种方式,内存单元是由called分配在heap上的,想返回其地址给caller,因此caller需要提供一个地址的内存(int *pv=NULL;), 然后交由called去改变这个单元的值(called(pv))。需要注意的是,这个内存不能是在called的stack中,因为一旦called结束,栈中内存都会被销毁,其值和地址都将无效,因而只能返回在heap中的值和地址。
总之就是记住一个宗旨,如果想通过参数来获得返回值,需要在caller中为该返回值分配内存单元,然后将这个内存单元的地址传递给called函数,called函数通过改变这个地址所指向的内存值来返回所需。
C语言中函数参数传递的三种方式(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数
一:值传递,只是把一个变量的值复制到调用函数中去。
二:引用传递,把变量的地址(即指针)传到调用的函数去,调用的函数对变量的地址进行的操作 会改变参数的值。