c

时间:2016-09-07 20:47:38

标签: c arrays struct

首先,我在这里有一个结构:

//Space to store the results for analysis map
struct Analysis analysis_space[32];

analysis_space数组的每个元素用于通过某些计算存储结果的一个文件;

所以,我的问题是

如果我想获得每个analysis_space的大小,

它应该是sizeof(analysis_space[0]),它返回每个元素的大小。

并且sizeof(analysis_space)返回整个数组大小?

其他问题:

由于analysis_space是一个数组,我想在将结果存储到它之前对其进行初始化?

类似于:analysis_space[0] = '\0'

1 个答案:

答案 0 :(得分:0)

  

...要获得每个analysis_space的大小,应该是sizeof(analysis_space[0]),它返回每个元素的大小。

sizeof(analysis_space[0])会返回char analysis_space[0]大小的值。返回的类型为size_t,匹配的printf()说明符为"%zu""%zX"等。使用sizeof运算符时,代码需要使用()类型。 ()对象是可选的。

printf("One element size %zu\n", sizeof analysis_space[0]);
  

并且sizeof(analysis_space)返回整个数组大小?

是,

printf("Array size %zu\n", sizeof analysis_space);
  

我想在将结果存储到它之前初始化它?类似于:analysis_space[0] = '\0'

analysis_space[0] = '\0'是一个赋值,而不是初始化。此外,struct Analysis期望结构分配/初始化,而不是标量。在之前不需要初始化  它。 @pm100

struct Analysis {
   int a;
   double b;
};

// Sample initialization
struct Analysis analysis_space[32] = { 
    {0, 0.0}, {1, 1.0} , {2, 2.0} }; // remainder zero initialized.

计算数组元素数:

// the type of the quotient is size_t
#define analysis_space_N (sizeof analysis_space / sizeof analysis_space[0])