画像(logo)

HOME/[C言語 入門]小学生でもわかるC言語2 目次/十一日目 構造体と関数

広告

[C言語 入門 小学生でもわかるC言語2]
十一日目 構造体と関数

広告

↓発売日:2018年09月22日↓

たった1日で基本が身に付く! C言語 超入門

新品価格
¥2,225から
(2018/10/8 23:10時点)

目次へ戻る

構造体と関数

今回は他の関数とのデータの受け渡しについて見ていきましょう!

1つのデータ

まずは1つのデータだけ渡してみます!

/*十一日目 プログラム1*/
#include <stdio.h>

struct DENWABOOK{
	char *name;
	char *tel;
};

void func(char *);

int main(){
	struct DENWABOOK no1;

	no1.name = "鈴木一郎";
	no1.tel = "09011111111";

	func(no1.name);
	
	return 0;
}

void func(char *name){
	printf("お名前:%s\n",name);
}

■実行結果■

画像(ce_11_1)

「struct DENWABOOK」のメンバ「char *name」だけ渡してみました!

「char *name」はポインタ変数になるので、頭に「*」アスタリスクが必要ですね!

プロトタイプ宣言です。

void func(char *);

そして「int main()」の中で関数「func()」に「*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{
	char *name;
	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);
}

■実行結果■

画像(ce_11_2)

無事にまるごと渡す事ができましたね!

これができれば色々な場面で使えそうですね!

では続けて他の関数から値を受け取るいわゆる戻り値の場合を見てみましょう!

まるごと受け取る

/*十一日目 プログラム3*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

struct DENWABOOK{
	char name[128];
	char tel[128];
};

struct DENWABOOK set_data(char *, char *);

int main(){
	struct DENWABOOK no1;

	no1 = set_data("田中二郎","07012345678");

	printf("お名前:%s 電話番号:%s\n",no1.name,no1.tel);

	return 0;
}

struct DENWABOOK set_data(char *name, char *tel){
	struct DENWABOOK tmp;
	strcpy(tmp.name,name);
	strcpy(tmp.tel,tel);
	return tmp;
}

■実行結果■

画像(ce_11_3)

どうやらまるごと受け取る事ができたみたいです!

同じように戻り値の部分を

struct DENWABOOK set_data(char *name, char *tel)

構造体変数にするだけですね!

構造体は何度も言うように

変数の種類「struct DENWABOOK」

変数名「no1」

ここをきちんと区別できるようにしましょう!

では次回は構造体とポインタについて見ていきます!

次回

十二日目 構造体とポインタ

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓発売日:2016年02月29日↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2018/10/8 23:25時点)

↓発売日:2018年06月22日↓

スッキリわかるC言語入門

新品価格
¥2,916から
(2018/10/8 23:15時点)

↓発売日:2018年03月09日↓

C言語本格入門 ~基礎知識からコンピュータの本質まで

新品価格
¥3,218から
(2018/10/8 23:16時点)

↓発売日:2017年06月14日↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2018/10/8 23:17時点)

↓発売日:2018年05月21日↓

作って身につく C言語入門

新品価格
¥2,462から
(2018/10/8 23:18時点)

↓発売日:2017年12月07日↓

新・標準プログラマーズライブラリ C言語 ポインタ完全制覇

新品価格
¥2,678から
(2018/10/8 23:19時点)

↓発売日:2017年02月08日↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2018/10/8 23:20時点)

↓発売日:2017年09月26日↓

かんたん C言語 [改訂2版] (プログラミングの教科書)

新品価格
¥2,916から
(2018/10/8 23:22時点)