- 通过引用而不是按值来引入性能有什么好处?我这样说是因为如果你通过引用传递,你正在创建一个4字节的指针,但是如果你按值传递,你将创建一个4字节的值。所以他们都占用额外的4个字节,对吧?
是否有可能通过引用传递一个int字面量使用强制类型:(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; }
3
A
回答
8
通过逐指针的优点(有C中没有参考文献)是一个函数可以更新原始int
,即,在它返回一个值。没有性能优势;相反,传递指针可能会降低程序速度,因为指向的int
必须位于可寻址的内存中,所以它不能位于寄存器中。
请注意,&(int *)5
不符合您的想法。 (int *)5
将值5
转换为指针,将其解释为内存地址。 &
会给这个指针的地址,除了采取临时地址是非法的。你的意思可能是
int i = 5;
func1(&i);
相关问题
- 1. 通过引用传递与值传递
- 2. 通过引用传递的int与int的传递地址之间的区别
- 3. 直接通过引用传递给shared_ptr的好处是,通过引用直接传递
- 4. Java是通过值传递还是通过引用传递?
- 5. 通过Java中的值传递引用
- 6. 通过引用传递const值的C++
- 7. LocalConnection通过值或引用传递?
- 8. 防止通过引用传递右值
- 9. PHP通过引用传递/值 - 问题
- 10. Delphi:通过引用或传递值?
- 11. VB6按值传递并通过引用
- 12. 通过命令行传递int int 3
- 13. 通过引用传递流
- 14. 通过引用传递LPCWSTR
- 15. C++通过引用传递?
- 16. shared_ptr的 - 通过值VS通过引用传递
- 17. 在java中传递值和通过引用传递
- 18. 问题与通过引用传递值到一个数组
- 19. 在Java中通过引用与值传递
- 20. 通过引用传递引用?
- 21. 如何通过值传递而不是通过React引用?
- 22. 通过引用通过比价值传递更昂贵
- 23. Php通过值传递或通过引用
- 24. 通过值传递
- 25. 准备好的声明中通过引用传递错误
- 26. 函数返回值vs修改通过引用传递的值
- 27. 通过引用传递的对象?
- 28. 通过引用传递的ANT参数
- 29. 通过引用的CreateInstance传递参数
- 30. 通过winsocks传递int发送
表达式'* a ++'增加_pointer_,而不是它指向的内容。如果你想增加你需要使用'(* a)++'的值。 – 2012-03-30 09:52:51
我不敢相信即使编译。你不能接受一个整型文字的地址。 – JeremyP 2012-03-30 10:27:29