質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

1585閲覧

c言語 初心者 関数の引数 値渡し

masaki5759

総合スコア9

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

1クリップ

投稿2021/05/18 16:18

問題 ①int型の配列(要素数5)の要素一つを値渡
しし、受け取った引数の値を表示する関数
②main関数で上記の関数を使って全ての
要素を表示する。

#include <stdio.h>

void funk (int a);

int main ()
{
int num[5] = {10,20,30,40,50};

funk(num[0]);

}

void funk (int a)
{
//
printf("num :%d\n", a);
}

実行結果
num : 10
①は問題なくできました。


#include <stdio.h>

void funk (int a);

int main ()
{
int num[5] = {10,20,30,40,50};

funk(num[5]);

}

void funk (int a)
{
int i;

for(i=0; i<5; i++)
{
printf("num :%d\n", a + i);
}
}

実行結果
num :6422284
num :6422284
num :6422284
num :6422284
num :6422284

②の実行結果がうまく表示されず詰まっている状態です。
どなたかご教授お願い致します????????

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

問題文の意味がわかってないようですね。
②は、①で作った関数をそのまま使います。

①で作った関数をそのまま使って、目的が果たせるようなmainを書くのが②です。

投稿2021/05/18 16:41

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaki5759

2021/05/18 16:47

ご指摘ありがとうございます。 funk関数の処理はいじらず、mainの中にループ処理を書くということでしょうか?
episteme

2021/05/18 22:53

↑ そう思うならやってみれば?
otn

2021/05/18 23:17

はい。回答はそういう意味です。
guest

0

void funk (int a)とあるので、
a = funk(); のaの値は不定です。
戻り値を利用しようとしているところはいいです。

投稿2021/05/18 22:27

yukkuri_55

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/05/18 22:37

何の話をしているかわからない。 C 言語はまともに使えるんじゃなかったのか?
dodox86

2021/05/18 23:07

@yukkuri_55さん 回答の指摘は残念ながら不適切です。 問題では「①int型の配列(要素数5)の要素一つを値渡しし、受け取った引数の値を表示する関数」とあるので、funk()関数の中でその値の表示を完結させれば①は満たせます。a = funk(); と言うコードの記述はどこにも無いし、int funk(int a); なかたち(シグネチャ)の関数だとしても、呼び出し元は使っていないので、返す必要も特にありません。更に、int aは関数の仮引数で呼び出し元がセットした値になるから、不定と言うこともありません。
dodox86

2021/05/18 23:14

私のコメントより引用: > 更に、int aは関数の仮引数で呼び出し元がセットした値になるから、不定と言うこともありません。 まぁ、戻り値voidな関数に対して呼び出し側で戻り値を受け取ろうとしていることを指摘しようとしているのだと思いますが、そのコードはもともと無いので、やはり謎なご指摘です。
yukkuri_55

2021/05/19 00:15

確かに、回答を急ぎすぎました。 ①で使ったものでしか、②では使えないのですね。 だとすると①を修正してもらうしかないですね。
yukkuri_55

2021/05/19 00:20

①の修正なしにできますね 私のは戻り値を利用したものを想定していました。
Zuishin

2021/05/19 00:20

それもそうだけど、そもそも C 言語の引数は省略できないし、void の戻り値は不定じゃないし、質問のコードでは戻り値を使ってないし、問題の原因となっているのは配列外の要素を渡していることだし、何もかも無茶苦茶。
fana

2021/05/19 00:21

低評価の理由: 何についての話をしているのかが全く不明である. 質問と関係がない話に思える.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問