首先,我在这里有一个结构:
//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'
?
答案 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])