【发布时间】:2017-07-28 02:30:08
【问题描述】:
如果我有一个仅由短无符号整数组成的结构,它将存储在相同大小的连续内存位置;如果我有一个短无符号整数数组,这同样适用。他们会有什么不同?是如何访问它们的吗?我知道通过使用指针来访问数组以引用数组的起始值,而数组运算符设置从该内存位置的偏移量,同样适用于结构或通过使用每个部分的内存位置访问的结构数据?
【问题讨论】:
-
不同之处在于您不控制可能/可能不会添加到结构中的填充(不提供某些预处理器指令)。该数组只是
shorts的 x-number 个,struct就是那个加上任何填充。 -
A
struct可以从函数中传递/返回。数组不能。 -
那么假设我想从一个函数中传递一系列连续的内存位置而不进行填充,我该怎么办?
-
传递一个包含数组的结构体。
-
处理数组的常用方法是通过指向元素类型的指针。例如,操作
unsigned short数组的函数将接收unsigned short*类型的参数,并添加指示数组中有多少元素的信息(可能是另一个参数)。
标签: c arrays pointers struct padding