最好用代码示例询问:
typedef struct {
... // Fields take up many bytes (>= 32 bytes)
} some_struct;
void alternative_1(some_struct arg);
void alternative_2(const some_struct *arg);
假设两个函数替代都是在已编译的二进制文件中实现的(因此无法内联),那么函数调用开销是否存在差异?
答案 0 :(得分:2)
显然是的:
当调用 alternative_1 时,整个结构数据在分支到函数之前被压入堆栈(这可能相当多)。
而 alternative_2 只有一个指向推入堆栈的结构的指针。
在结构上运行时也有很大的不同:
它非常类似于接收整数或指向整数的指针的函数。