- 按引用而不是按值传递整数是否有性能优势?我这样说是因为如果您通过引用传递,您将创建一个 4 字节的指针,但如果您通过值传递,您无论如何都会创建该值的 4 字节副本。所以他们都多占用了 4 个字节,对吧?
是否可以使用 cast: (int *) 通过引用传递一个 int 文字?还是必须将指针传递给 int ?请参阅下面的示例代码:
int func1(int *a){ (*a)++; // edited from comment by Joachim Pileborg printf("%i\n", *a); return 0; } int func2(int a){ a++; printf("%i\n", a); return 0; } int main(void){ func1(&(int *)5); // an int literal passed by reference using a cast ? func2(5); return 0; }
最佳答案
指针传递(C 中没有引用)的好处是函数可以更新原始 int
,即返回其中的值。没有性能优势;相反,通过指针传递可能会减慢您的程序,因为指向的 int
必须位于可寻址内存中,因此它不能位于寄存器中。
请注意,&(int *)5
并不像您认为的那样。 (int *)5
将值 5
转换为指针,将其解释为内存地址。 &
会给出该指针的地址,除了获取临时地址是非法的。你可能是说
int i = 5;
func1(&i);
关于c - 通过引用与通过值传递 int 的好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940643/