我有一个声明这些数组的头文件:
int stVal_On[] = {2};
int stVal_Off[] ={1};
int subVal_On[]={1};
int subMss[]={1};
int subVal_Off[]={0};
然后在声明的结构中使用解除引用的数组:
WriteData struct的定义:
/* Write structure used in loop for Read- and Write Tests */
typedef struct WriteData {
char* name; // MMS object name
const VOID* data; // Data to write
const SINT32 localFormat; // SVI type (on server)
const SINT32 dataLength; // length of data to write/read
const SINT32 NbrofElmnts; // Number of elements to write/read
char* description; // SVI type as String (on server)
char* SVI_Name; // SVI address of the SVI mapped on server
UINT32 svi_Length; // length of SVI variable on server (used for readback)
} WriteData;
这个int arr[] = {1};
成语的目的是什么?如果只分配了一个值,为什么要使用数组?
答案 0 :(得分:5)
嗯,我能想到的一个原因与代码组织有关。如果您以表格形式编写代码:
struct {
char const *file_name;
uint16_t flags;
// Other data
} table [] = {
{ .file_name = "/usr/bin/foo", .flags = 0x0 },
};
for (size_t i = 0; i < sizeof(table)/sizeof(table[0]); ++i) {
// do something meaningful with a table row table[i]
}
虽然它现在只是一个1的数组,如果你需要添加更多的情况,你的代码已经很好地编写了。您只需添加另一行&#34;行&#39;到表初始化程序。
答案 1 :(得分:4)
所有定义都只使用一个元素创建数组,为true。实际用例可能会有所不同。
一个commonly used scenario,这个变量可以作为函数参数传递,并且可以从被调用的函数中更改数组的内容(唯一的元素值),如果是非数组变量是不可能的。这可能不是非常智能方式,但仍然可以,并且有人选择使用它。
此外,与往常一样,由提供的初始化程序确定的数组大小会留下扩展空间,而无需更改主要代码。