C言語 構造体のメンバ指定やメンバアクセス演算子






スポンサードリンク

先日説明させて頂いた構造体(こちら)にの変数を参照する際に使うメンバアクセス演算子に付いて説明させていただきたいと思います。

構造体の宣言
※#include <stdio.h>宣言は省略しております。

 struct 任意の構造体名{
   任意の変数宣言 任意の変数名
 };

上記の任意の変数&変数名の集まりをメンバと言います。

構造体宣言 例

 struct zzz{
   char car[50];
   int nedan;
   int nebiki;
 };

上記構造体に用意した任意の変数(メンバ)を指定する場合↓
※ヘッダは省略しております。

   struct zzz dat;

   strcpy(dat.car,"カローラ");
   dat.nedan = 150;
   dat.nebiki = 5;

メンバを指定する際に、構造体変数名【 dat 】とメンバ指定変数名との間に【 . 】(ドット)が付いていることに気が付くと思います。これをドット演算子と言います。

またポインタを用いて指定する場合は【 -> 】アロー演算子を用います。
今から上記のサンプルをポインタと【 -> 】アロー演算子を用いたサンプルを見てみたいと思います。

サンプル

#include <stdio.h>
#include <string.h>
   
struct zzz{
   char nm[50];
   int nedan;
   int nebiki;
};

int main(void)
{
   struct zzz dat;
   struct zzz *po = &dat;

   strcpy(po->nm,"カローラ");
   po->nedan=150;
   po->nebiki=5;

   printf("車名%s\n", po->nm);
   printf("車体価格%d万\n", po->nedan);
   printf("値引き%d万\n", po->nebiki);

   strcpy(po->nm,"エスティマ");
   po->nedan=250;
   po->nebiki=10;

   printf("車名%s\n", po->nm);
   printf("車体価格%d万\n", po->nedan);
   printf("値引き%d万\n", po->nebiki);
}

解説
構造体名zzzを作成し、構造体変数【 struct zzz dat; 】を宣言し次に【 struct zzz *po 】ポインタ宣言し【 dat 】のアドレスをポインタに代入しています【 struct zzz *po = &dat; 】
変数だとメンバ指定の際【 . 】(ドット)を用いて指定していたのに対して、ポインタにてメンバ指定する際【 -> 】(アロー演算子)を用いている点に注意して下さい。
値の代入に付いては、構造体にて用意した変数名に代入しそれぞれ出力しております。
構造体記述説明

上記の実行結果


上記と同じサンプルですが整数型【 int 】でのサンプルも念の為。
関数呼び出し側の点を見て下さいね。

簡単ですが説明は以上です。

あかかげまるのC言語入門はこちら!!

スポンサードリンク

パソコン勉強部屋 | パソコン勉強部屋2 | ADSL勉強部屋 | メール勉強部屋 | LAN勉強部屋 | ホームページ勉強部屋 | 自宅サーバー勉強部屋 | お役立ちソフトの部屋 | C言語勉強 | 無料ゲーム | 無料セキュリティー | Linuxのコーナー | あかかげまる | オンライン通販 | ショップブランドパソコン | DVDとCD編集ツール

 Subscribe in a reader


ページトップへ