複合リテラルとは
複合リテラルとは
複合リテラルとは、配列や構造体の名前なしでオブジェクトを宣言するためのリテラルです。
#include <stdio.h> typedef struct { int id; char name[30]; } student_t; void print(student_t *p) { printf("id: %d\n", p->id); printf("name: %s\n", p->name); } int main(void) { student_t student1 = {.id = 1, .name = "Suzuki"}; print(&student1); // 複合リテラルを使用する print(&(student_t) {.id = 2, .name = "Kazama"}); return 0; } // 実行結果 id: 1 name: Suzuki id: 2 name: Kazama
このように、構造体名を宣言せずに書くことができます。
関数の外で宣言しているとstatic記憶期間になり、それ以外だとautomatic記憶期間になります。