【发布时间】:2010-11-08 10:19:08
【问题描述】:
由于我对 cpu 寄存器不太熟悉,一般来说,特别是在 x86 的任何架构中,如果使用 VC++ 与编译器相关,我很好奇数组的所有元素是否都可能具有少量元素就像一个包含 4 个元素的 1 字节字符数组驻留在某个 cpu 寄存器中,因为我知道这对于双精度、整数等单个原语可能是正确的?
当我们有如下参数时:
void someFunc(char charArray[4]){
//whatever
}
这个参数传递是否肯定会通过传递一个指向函数的指针来完成,或者该数组将驻留在某个 cpu 寄存器中,从而无需传递指向主存储器的指针?
【问题讨论】:
-
正如您所提到的,这是非常特定于平台和编译器的。请提供一些规格。
-
这取决于 CPU 寄存器的大小,它是 32 位 int 并且是 32 位 CPU,您的数组中只有 1 个变量可以容纳,我怀疑整个数组会不会放在一个 CPU 寄存器中,我认为最多是一个指向数组中某个元素的指针。
标签: c++ arrays parameters cpu