求助大神,,,当函数返回一个结构时,系统会创建临时变量来存储这个结构,比如
stru1 = func(stru2);//stru1是一个结构,func()函数返回一个结构
如果换成引用,则系统不会创建临时变量,直接将其赋给stru1,
stru1 = func(stru2) //func()函数返回一个引用
请问为什么不会创建临时变量?
求助大神,,,当函数返回一个结构时,系统会创建临时变量来存储这个结构,比如
stru1 = func(stru2);//stru1是一个结构,func()函数返回一个结构
如果换成引用,则系统不会创建临时变量,直接将其赋给stru1,
stru1 = func(stru2) //func()函数返回一个引用
请问为什么不会创建临时变量?
从原理说,因为引用是主程序/函数共享的存储空间,生命周期随主程序,所以函数里直接写入就可以了,已经写入主程序里变量所在的内存。
而非引用,则函数里写入的变量和主程序的不在一起,所以需要一个复制的动作。
从使用者的角度说,显然C语言没有必要设计两种语法干同一件事,并且引用是为了解决性能和变量共享的问题,所以它就被设计成那样。