正常数组声明和结构内声明的数组之间的内存和效率差异

pal*_*tha 4 c performance declaration

在C语句中声明数组时,它们可以正常声明:

int arr[10]
Run Code Online (Sandbox Code Playgroud)

或者它们也可以在如下结构中声明:

struct structArr{
   int sArr[10];
}s1;
Run Code Online (Sandbox Code Playgroud)
  1. 使用的时候会不会有任何记忆或空间的权衡s1.sArr[],而不是arr[],如果是的话,为什么?
  2. 任何一种形式比另一种形式更有效,更快吗?

我个人认为arr[]比这更快s1.sArr[]但我不知道我是否正确,而且我没有技术答案.

unw*_*ind 5

我不希望有任何区别,不.

编译器"知道" sArr字段与基址的偏移量s1为0,因此我猜测可以使用完全相同的指令序列完成访问.

当然,将数组包装在一个结构中可以按值分配和传递/返回它,这可能是很好的好处.