C言語の構造体(struct)とは?基本構文と使い方を実例付きで解説
構造体は、C言語におけるユーザー定義型のひとつです。異なるデータ型の変数をまとめて、ひとつの新しいデータ型として扱うことができます。構造体には複数のメンバーを持たせることができ、定義した構造体型の変数(構造体変数)も複数作成可能です。
C言語では、struct というキーワードを使って構造体を定義します。また、構造体のメンバーにアクセスする際は、ドット演算子(.)を使用します。
構造体の基本構文
C言語における構造体の定義は、以下のような形式で記述します。
struct 構造体名 {
メンバーの定義;
} 構造体変数;各要素の意味は次のとおりです。
構造体名 − 構造体に付ける任意の名前です。
メンバーの定義 − 構造体内に含めるメンバー変数の一覧です。
構造体変数 − 定義した構造体型のオブジェクト(実体)です。
構造体の使用例
ここで、実際にC言語で構造体を使用するサンプルプログラムを見てみましょう。
サンプルコード
#include <stdio.h>
#include <string.h>
struct Data {
int i;
long int f;
} data, data1;
int main( ) {
data.i = 28;
printf("The value of i : %d\n", (data.i));
printf("Memory size occupied by data : %d\t%d", sizeof(data), sizeof(data1));
return 0;
}実行結果
The value of i : 28 Memory size occupied by data : 1616
プログラムの解説
上記のプログラムでは、まず Data という名前の構造体を定義し、同時に data と data1 という2つの構造体変数を作成しています。
構造体内で宣言されたメンバー変数 i には、main() 関数内でドット演算子を使って data.i = 28; のように値を代入し、その値を出力しています。
さらに、sizeof 演算子を使うことで、構造体変数が占有するメモリサイズを確認できます。実行結果から、data と data1 がそれぞれ16バイトのメモリを消費していることがわかります。このサイズは、環境やコンパイラによって異なる場合があります。
-
セグメントツリー(Segment Tree)とは?データ構造の基本と仕組みをわかりやすく解説
セグメントツリーとは セグメントツリー(Segment Tree)は、配列に対する「区間に関する問い合わせ」と「要素の更新」を高速に処理するためのデータ構造です。本記事では、セグメントツリーが必要とされる背景と、その基本的な構成方法について解説します。 解決したい問題 まず、次のような問題を考えてみましょう。長さ n の配列 arr[0 … n-1] が与えられたとき、以下の2つの操作を効率よく行いたいとします。 区間和の取得:インデックス l から r までの要素の合計を求める(0 ≤ l ≤ r ≤ n-1) 要素の更新:指定したインデックス i の値を新しい値 x に変更する(arr
-
ハーフエッジデータ構造(HalfedgeDS)とは?基本概念とCGAL実装例をわかりやすく解説
はじめにテンプレートパラメータとして用いられるハーフエッジデータ構造(Halfedge Data Structure、略称 HalfedgeDS)は、頂点・辺・面の接続情報(インシデンス情報)を管理できる、辺を中心としたデータ構造として定義されています。平面地図(planar map)や多面体など、任意の次元空間に埋め込まれた向き付け可能な2次元曲面の表現に適した構造です。このデータ構造では、各辺が逆向きの向きを持つ2つのハーフエッジ(半辺)に分割されます。各ハーフエッジは、隣接する1つの面と1つの頂点への参照を保持し、逆に各面および各頂点にも、それぞれ1つの接続ハーフエッジが格納されます。さ