花括号内的代码行

时间:2016-12-09 20:20:54

标签: c

我最近在一个方法中遇到了如下一行:

range_t range = {0, bytes_usage(value), hm->pair_size};

这究竟是什么意思,围绕代码片段有花括号?

2 个答案:

答案 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