在 C 语言中声明数组时,通常可以这样声明:
int arr[10]
或者它们也可以在像这样的结构中声明:
struct structArr{
int sArr[10];
}s1;
- 当使用
s1.sArr[]
而不是arr[]
时,是否会有任何内存或空间权衡,如果是,为什么? - 是否有任何一种形式比另一种形式更高效、更快速?
我个人认为 arr[]
会比 s1.sArr[]
快,但我不知道我是否正确而且我不知道'有一个技术答案。
最佳答案
我不认为会有任何不同,不。
编译器“知道”sArr
字段相对于 s1
基地址的偏移量为 0,因此我猜访问可以使用确切的方式完成相同的指令序列。
当然,将数组包装在一个结构中可以按值分配和传递/返回它,这是一个很好的好处。
关于c - 普通数组声明和在结构内声明的数组之间的内存和效率差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14153784/