画像(logo)

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

広告

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

広告

↓2016年02月29日発売↓

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

目次へ戻る

構造体と関数

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

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□

広告

↓2017年06月16日発売↓

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

新品価格
¥2,700から
(2017/5/1 13:05時点)

↓2014年08月09日発売↓

新・明解C言語 入門編 (明解シリーズ)

新品価格
¥2,484から
(2017/5/1 13:08時点)

↓2016年02月20日発売↓

新・解きながら学ぶC言語

新品価格
¥2,160から
(2017/5/1 13:10時点)

↓2017年02月11日発売↓

C言語プログラミング基本例題88 88

新品価格
¥3,024から
(2017/5/1 13:12時点)

↓2016年12月15日発売↓

Cの絵本 第2版 C言語が好きになる新しい9つの扉

新品価格
¥1,490から
(2017/5/1 13:13時点)

↓2017年02月08日発売↓

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

新品価格
¥2,700から
(2017/5/1 13:15時点)