可能重复:
按引用传递与按值传递有什么区别?
我知道标题可以代表许多其他已回答的问题,我相信我的非常具体的问题没有在其他线程中得到回答(我已经搜索过,如果它是重复的,抱歉)。
对企业:考虑下一个签名:
A:
void MyFunction(long int x);
乙:
void MyFunction(long int & x);
和下一个用法:
void main()
{
short int y = 0;
MyFunction(y);
...
}
我的问题与MyFunction的内存堆栈帧中参数的内存消耗有关。
情况A,参数是传值的,是不是会消耗sizeof(short int)个字节?
在情况 B 中,参数通过引用传递,假设编译器将使用指针实现它,这是否意味着它将消耗 sizeof( pointer_type ) 字节 - 这可能比 short int 更多?(曾经有人告诉我,在使用引用时,它可能会消耗 64 位,具体取决于平台)
请注意,该函数接收 long int 类型,因为我想知道它在这两种情况下是否有任何影响。
还有另一个小问题 - 任何人都可以发布一个编译器不会使用指针实现按引用传递参数的示例吗?
谢谢,阿萨夫。