構造体.

Slides:



Advertisements
Similar presentations
構造体 構造体とは? 複数のデータをパックしたもの。 新しい “ 型 “ として使用できる. 構造体 キーワード struct strcut は構造体を宣言する命令。 struct { double x,y; }a,b,c; ↑ ここまでが宣 言 ← この形式で、構造体 a,b,c, を定 義.
Advertisements

第 10 回 宿題 出題日: 12 月 14 日 締切日: 12 月 21 日. 提出について 以下の場合は、出題日の出席を欠席とする 締切日を過ぎた場合 正解率が 7 割未満の場合 提出は、 PDF ファイルを印刷して、それに答 えを書いて提出すること。
プログラミング入門2 芝浦工業大学情報工学科青木 義満 第11回構造体. プログラミング入門2 2 構造体 5 人分のサッカー選手データ 全てのデータを関数に渡して,処理する場合 char name[5][256]; int assist[5]; int score[5]; void func( char.
メモリとポインタ. プログラムの前提 コンピュータは、0と1で計算をし、 0と1でデータを保存している。 メモリを学ぶのに必要な知識である。
C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
理化学研究所 第 10 回 構造体 半田利弘 鹿児島大学 大学院理工学研究科 物理・宇宙専攻 鹿児島大学 プログラミング基礎演習.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第12回新しい型と構造体.
第13回構造体.
課題解説: 関数の引数にポインタを使って2数を入れ替える
データ構造とアルゴリズム 第10回 mallocとfree
第12回構造体.
プログラミング入門2 ポインタについて補足 構造体 第11回 芝浦工業大学情報工学科 青木 義満、篠埜 功
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
16.3 関数と構造体 構造体ポインタ 地底探査ゲーム
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
構造体 プログラミング入門2 芝浦工業大学情報工学科 青木 義満
プログラミング 3 構造体(1).
第10回 プログラミングⅡ 第10回
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
C言語講座 第3回 ポインタ、配列.
プログラミング2 関数
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
関数の定義.
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング 4 記憶の割り付け.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
第10章 これはかなり大変な事項!! ~ポインタ~
プログラミング 3 構造体(2).
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
第11回 プログラミングⅡ 第11回
型の compatibility とポインタ演算
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
構造体と共用体.
データ構造とアルゴリズム 第11回 リスト構造(1)
プログラミング入門2 第9回 ポインタ 情報工学科 篠埜 功.
プログラミング 3 2 次元配列.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
ポインタとポインタを用いた関数定義.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
ネットワーク・プログラミング Cプログラミングの基礎.
高度プログラミング演習 (11).
プログラミング論 構造体
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
モバイルプログラミング第2回 C言語の基礎 (1).
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
第4回 配列.
TList リスト構造とは? 複数のデータを扱うために、 データの内容と、次のデータへのポインタを持つ構造体を使う。
C言語講座第5回 2017 構造体.
第5回 配列.
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

構造体

異なる型をまとめる 今までは同じ型を複数作成していた→配列 場合によっては 異なる型をまとめて使いたい→構造体 構造体とは複数の異なる型をまとめて作られた型である

構造体の作り方 構造体を作る前に 生徒の情報(学年、名前、身長)のデータを 今まで通り、変数で用意すると int year;//学年 char name[64];//名前 double stature;//身長 となるが全て関連したデータであるにもかかわらず、 1つ1つが別の変数として宣言されているため、あまりわかりやすくない。→構造体はこれらの型を一つにまとめる

構造体の作り方 構造体のプログラム struct student{ int year; char name[64]; double stature; }; 1.構造体の型にはstructを使用する。 2.構造体の型名(student)をつける。   この型名を構造体タグ名と呼ぶことがある

構造体タグ名について 作成した構造体それ自体の名前であり 厳密には型名ではないので注意

構造体の型の変数の宣言 ここまでで構造体の型を作成したので、 次は構造体を実際に使うために構造体の型の 変数を宣言する必要がある。 宣言の方法 struct student data; studentを構造体タグ dataを構造体変数

ここまでのまとめ プログラム //main関数の前に構造体の型を作ること struct student{ int year; char name[64]; double stature; }; int main(void){ struct student data; return 0; }

構造体の使い方 作った構造体の型にある要素(yearやstature) を使いたいときは、次のようにする 構造体変数名.要素名 例)data.year = 1; 配列は同じ型の変数を数字で区別するが構造体は要素名で区別する

構造体の特徴 特徴 構造体変数自体を変数として取り扱える 構造体同士で変数を代入することが可能 一方で、演算や比較は不可能

構造体変数同士で代入を行う例 struct student{ int year; char name[64]; double stature; }; int main(void){ struct student data1,data2; data1.year = 1; strcpy(data1.name,”AAA”); data1.stature = 160.5; data2 = data1; return 0; } 結果 data2はdata1のデータを得る

typedefについて 構造体を作るときには必ずstructが必要だが 構造体タグを新しいタグとして一度に宣言する方法がある。→typedef typedefを使うと新しい型を宣言できる 使い方 typedef 新しい型の形 新しい型名

typedefを使った例 struct student_tag{ int year; char name[64]; double stature; }; typedef struct student_tag student; これを使うことで宣言が楽になる struct student_tag data;        ↓ student data;

もっと簡略化 typedefを使って型を定義するのが面倒なので 構造体タグと構造体型を1度に宣言する typedef struct student_tag{ int year; char name[64]; double stature; }student; (さらに構造体タグも省略できる)

構造体の特徴2 構造体変数は構造体型の引数を使うことが出来、1度に複数の情報を渡すことができる。 例 student型の構造体変数を引数として受け取る関数 void student_print(student data)

プログラムの例 void student_print(student data){ printf("[学年]:%d\n",data.year); printf("[名前]:%s\n",data.name); printf("[身長]:%f\n",data.stature); return; }

構造体とポインタ変数 #include <stdio.h> #include <string.h> typedef struct { int year; char name[64]; double stature; } student; int main(void) { student data; student *pdata; pdata = &data;//初期化 (*pdata).year = 10; //常変数モードへの切り替え strcpy((*pdata).name,"MARIO"); // 通常変数モードへの切り替え return 0; }

前のページのプログラム解説 構造体の各要素は、宣言の時の順番通りに並んでおり、&演算子で求められるアドレスは、構造体の始めの要素のアドレスである 構造体のポインタ変数の場合も、 *記号で通常変数モードに切り替えるが可能。 ただし、.の方が優先されるので、()をつける。 (*構造体ポインタ変数名).要素名 違う書き方もあり 構造体ポインタ変数名->要素名

ポインタ型の引数をもつ関数 参照 (プログラム) http://9cguide.appspot.com/16-02.html

構造体の配列 構造体を配列にすることができる student data[10]; 使い方も今までと同じ data[1].year = 2;

参考文献 苦しんで覚えるC言語 複数の型をまとめる http://9cguide.appspot.com/16-01.html http://9cguide.appspot.com/16-02.html http://9cguide.appspot.com/16-03.html