【发布时间】:2012-03-11 02:26:43
【问题描述】:
我现在正在一台 linux 机器上使用 GCC 中的 sizeof(),我发现了一些非常令人惊讶的东西。
printf ("\nsize of int = %lu\n", sizeof(int));
printf ("\nsize of int* = %lu\n", sizeof(int *));
产量
size of int = 4
size of int* = 8
我认为指向整数的指针的大小会比实际的整数本身小得多!
我现在正在研究嵌入式软件,我的理解是通过引用传递比通过值传递更有效(就功率而言)。
如果指针的大小大于实际值,请有人澄清为什么通过引用传递比通过值传递更有效。
谢谢!
【问题讨论】:
-
您是否在 64 位操作系统上运行?
-
不要比较对象(或类型)的大小。根据需要使用它们。
-
太棒了!我在 64 位机器上,但为什么按引用传递比按值传递更有效?
-
它不一定是“低效”的,因为参数恰好是 64 位而不是 32 位。就“功耗”而言,您需要计算 1) 执行操作所需的 #/指令,以及 2) 完成指令所需的 #/cycles。 “通过引用传递”可以消除复制数据的需要。这可以为数据记录节省大量资金。对于像“int”这样的标量值,它可能比“按值传递”效率略低。
-
谢谢 paulsm4,这正是我想要的。