- 通过引用而不是值传递整数是否有性能优势?我这样说是因为如果您通过引用传递,您将创建一个 4 字节指针,但如果您通过值传递,您无论如何都会创建该值的 4 字节副本。那么它们都多占用了 4 个字节,对吗?
-
是否可以使用强制转换通过引用传递 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)