我最近在一个方法中遇到了如下一行:
range_t range = {0, bytes_usage(value), hm->pair_size};
这究竟是什么意思,围绕代码片段有花括号?
答案 0 :(得分:4)
您使用的结构是未定义的,但显然至少三个成员,这些成员在大括号(大括号)中初始化。
range_t range = {0, bytes_usage(12), hm->pair_size};
第一个是硬编码0
。第二个是函数调用的结果。第三个是另一个struct
成员的值,需要struct
指针。
#include <stdio.h>
typedef struct { // a struct with 3 members
int a, b, c;
} range_t;
typedef struct { // a struct that will be used to initialise another
int pair_size;
} hm_type;
int bytes_usage(int v) // a function that returns a value
{
return v + 1;
}
int main(void) {
hm_type hh = {42}; // a struct with data we need
hm_type *hm = &hh; // pointer to that struct (to satisfy your question)
range_t range = {0, bytes_usage(12), hm->pair_size}; // your question
printf("%d %d %d\n", range.a, range.b, range.c); // then print them
}
节目输出:
0 13 42
答案 1 :(得分:0)
这是一个初始化程序。它正在初始化range
,这是一种range_t
,它可能是一个结构。请参阅此问题以获取一些示例:
How to initialize a struct in accordance with C programming language standards