c - 普通数组声明和在结构内声明的数组之间的内存和效率差异

标签 c declaration performance

在 C 语言中声明数组时,通常可以这样声明:

int arr[10]

或者它们也可以在像这样的结构中声明:

struct structArr{
   int sArr[10];
}s1;
  1. 当使用 s1.sArr[] 而不是 arr[] 时,是否会有任何内存或空间权衡,如果是,为什么?
  2. 是否有任何一种形式比另一种形式更高效、更快速?

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

最佳答案

我不认为会有任何不同,不。

编译器“知道”sArr 字段相对于 s1 基地址的偏移量为 0,因此我猜访问可以使用确切的方式完成相同的指令序列。

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

关于c - 普通数组声明和在结构内声明的数组之间的内存和效率差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14153784/

相关文章:

android - 安卓标签库

c - 我们如何在两个不同的内核模块之间共享一个哈希表

python - Numpy 中每一行的 `vectorize`

c - 作为函数类型的结构

php - 使用 Asterisk PHP 脚本匹配电话前缀的最快方法

c# - 如果将字符串引用设置为引号中的字符串,编译器是否会创建额外的字符串?

c - 即使链接更多文件后,fstat() st_nlink=1

c - 为什么我在创建着色器类型 35663 时遇到运行时错误

c++ - 根据该实用程序的源代码创建类似 Linux "df"的实用程序

c++ - 在头文件中将变量声明为指针和非指针的区别