C为什么指针大于整数

ice*_*Tea 4 c memory embedded

我正在Linux机器上玩GCC中的sizeof(),我发现了一些非常令人惊讶的东西.

printf ("\nsize of int = %lu\n", sizeof(int));
printf ("\nsize of int* = %lu\n", sizeof(int *));
Run Code Online (Sandbox Code Playgroud)

产量

size of int = 4
size of int* = 8
Run Code Online (Sandbox Code Playgroud)

我认为指向整数的指针的大小会比实际的整数本身小得多!

我现在正在研究嵌入式软件,我理解通过引用传递比传递值更有效(在功率方面).

如果指针的大小大于实际值,有人可以澄清为什么通过引用传递比通过值更有效.

谢谢!

Mar*_*ett 9

整数可以是编译器编写者喜欢的任何大小,唯一的规则(在标准C中)是:a)int不小于short或大于long,b)int至少有16位.

在64位平台上将int保持为32位以实现兼容性并不罕见.


Ste*_*hen 5

当要传递的值大于引用的大小时,通过引用传递比传递值更有效.如果传递的是大型结构/对象,则通过引用传递很有意义.如果要对值进行持久修改,则传递引用也是有意义的.