広告
↓発売日:2018年09月22日↓
新品価格 |
今回は他の関数とのデータの受け渡しについて見ていきましょう!
まずは1つのデータだけ渡してみます!
/*十一日目 プログラム1*/ #include <stdio.h> struct DENWABOOK{ const char* name; const char* tel; }; void func(const char* ); int main(){ struct DENWABOOK no1; no1.name = "鈴木一郎"; no1.tel = "09011111111"; func(no1.name); return 0; } void func(const char* name){ printf("お名前:%s\n",name); }
「struct DENWABOOK」のメンバ「const char* name」だけ渡してみました!
「const char* name」はポインタ変数になるので、「*」アスタリスクが必要ですね!
プロトタイプ宣言です。
void func(const char* );
そして「int main()」の中で関数「func()」に「no1.name」を渡します!
func(no1.name);
ポインタ変数なので先頭に「&」アンパサンドはつかないですね。
そして実行結果を見ると無事に渡されたようです!
普通の変数と同じように他の関数に内容を渡す事ができましたが、1つ1つ渡していたのでは構造体の意味があまりない気がしますよね。
ここまで言えば想像つくとは思いますが、セットで一つの変数なので、セットのまま、構造体変数というカタチで内容を他の関数に渡せるのです!
普通の変数の場合、プロトタイプ宣言で
void func(int );
変数の種類だけ入れてその後に
void func(int suji);
変数名を決めるのでした。
これで「int suji」が関数「func」に渡されましたね!
同じようにこれを構造体変数に置き換えるだけです。
まずはプロトタイプ宣言ですね。
変数の種類を入れるので、
void func(struct DENWABOOK );
このようになりますね!
前回しつこいぐらいに言いましたが、「struct DENWABOOK」までが変数の種類です。
その後同じく本体の方で変数名まで決めます。
void func(struct DENWABOOK no1);
これで構造体変数丸ごと渡す事ができるのです!
広告
では先ほどのプログラムを少しいじって今度は構造体まるごと他の関数に渡してみます。
/*十一日目 プログラム2*/ #include <stdio.h> struct DENWABOOK{ const char* name; const char* tel; }; void func(struct DENWABOOK ); int main(){ struct DENWABOOK no1; no1.name = "鈴木一郎"; no1.tel = "09011111111"; func(no1); return 0; } void func(struct DENWABOOK no1){ printf("お名前:%s 電話番号:%s\n",no1.name,no1.tel); }
無事にまるごと渡す事ができましたね!
これができれば色々な場面で使えそうですね!
では続けて他の関数から値を受け取るいわゆる戻り値の場合を見てみましょう!
/*十一日目 プログラム3*/ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> struct DENWABOOK{ char name[128]; char tel[128]; }; struct DENWABOOK set_data(const char* ,const char* ); int main(){ struct DENWABOOK no1; no1 = set_data("田中二郎","07012345678"); printf("お名前:%s 電話番号:%s\n",no1.name,no1.tel); return 0; } struct DENWABOOK set_data(const char* name,const char* tel){ struct DENWABOOK tmp; strcpy(tmp.name,name); strcpy(tmp.tel,tel); return tmp; }
どうやらまるごと受け取る事ができたみたいです!
同じように戻り値の部分を
struct DENWABOOK set_data(const char* name,const char* tel)
構造体変数にするだけですね!
構造体は何度も言うように
変数の種類「struct DENWABOOK」
変数名「no1」
ここをきちんと区別できるようにしましょう!
では次回は構造体とポインタについて見ていきます!
広告
↓発売日:2016年02月29日↓
12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 新品価格 |
↓発売日:2018年06月22日↓
新品価格 |
↓発売日:2018年03月09日↓
新品価格 |
↓発売日:2017年06月14日↓
新品価格 |
↓発売日:2018年05月21日↓
新品価格 |
↓発売日:2017年12月07日↓
新品価格 |
↓発売日:2017年02月08日↓
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ) 新品価格 |
↓発売日:2017年09月26日↓
新品価格 |