Project_OKI’s diary

エンジニアの勉強ブログ

組み込みC言語基礎知識7(構造体1)

​​

構造体について

・目次

 

1.構造体とは

 (1) 情報の塊

 (2) 「情報」をまとめて一つで使いたい扱いたいときに使用する。

 (3) 数の情報から構成されるデータをパッケージ化し、独自の型として定義したもの

2.構造体例



引用:C言語 struct【構造体:複数の情報をまとめる方法とメリット】
参考:​C言語 struct【構造体:複数の情報をまとめる方法とメリット】

3.構造体の使い方

(1) 構造体の使用方法

 //ーーーーー使い方ーーーーーーーーーーーーー

構造体の型定義(構造体定義):
 基本的な書き方:
   stract 構造体タグ名{
     構造体メンバ;
   };
  main関数{
    構造体の型名 構造体変数名;
    構造体変数名.構造体メンバ= xxxx;

  }
//ーーーーーーーーーーーーーーーーーーーーーー

 ※main関数外で宣言し、グローバル変数として宣言することも可能

(2)構造体の使用例
struct Square{
     int vertical;
     int beside;
 };


 int main(void){
     struct Square squ;  //構造体の変数定義
     squ.vertical = 10;
     squ.beside = 20;
     printf("縦の長さ:%d、横の長さ:%d",squ.vertical,squ.beside);
     return 0;
 }

実行結果(確認):​https://paiza.io/projects/b3Rv_Ujb8fbs5C79wnJG7A

 

4.typedefを使った構造体の型定義

 typedefを使った構造体の型定義:
 typedefを使用することにより、変数定義でstructを記述する必要がなくなり省略できる。
(1)typedefでの構造体の宣言と使用方法
//ーーーーー使い方ーーーーーーーーーーーーー
 typedef struct{
  構造体メンバ
 }構造体のデータ型名;
 
main関数の中
  構造体の型名 構造体変数名;

  構造体変数名.構造体メンバ= xxxx; 
//ーーーーーーーーーーーーーーーーーーーーー

(2)typedefで構造体を宣言する使用例
typedef struct {
    int vertical;
    int beside;
}Square;

int main(void){
    Square squ;  //構造体の変数定義
    squ.vertical = 10;
    squ.beside = 20;
    printf("縦の長さ:%d、横の長さ:%d",squ.vertical,squ.beside);
    return 0;
}

実行結果(確認):​https://paiza.io/projects/apNaW_PNvS4-4NaW0SgBGg?language=c


5.構造体を使った関数

構造体を使うことにより、関数に複数の値を渡す際に、1個の引数で渡すことができる。
(1)構造体を関数へ渡すプログラム
//構造体定義
typedef struct {
    int vertical;   //縦の長さ
    int beside;     //横の長さ
}Square;


//縦の長さと、横の長さを表示する関数
void PrintScu(Square squ){
    printf("縦の長さ:%d、横の長さ:%d",squ.vertical,squ.beside);
}


int main(void){
    Square squ = {10,20};  //構造体の変数定義と数値の代入
    PrintScu(squ);          //表示の実行
    return 0;
}
実行結果:​https://paiza.io/projects/mv59PY-K9-sgnQEVBrSbfw
 

関連記事

過去の記事:

知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - Project_OKI’s diary

C言語基礎知識6(関数) - Project_OKI’s diary

C言語基礎知識7(構造体1) - Project_OKI’s diary

C言語基礎知識8(enum:列挙型) - Project_OKI’s diary

C言語基礎知識9(typedef) - Project_OKI’s diary

C言語基礎知識10(extern宣言) - Project_OKI’s diary

C言語基礎知識11(#define) - Project_OKI’s diary