広告スペース

確認問題(関数)

戻り値、値渡し、void関数、プロトタイプ宣言の理解度を確認しましょう。

確認問題1 ― 戻り値の型

int add(int a, int b) {
    return a + b;
}
int main(void) {
    printf("%d\n", add(3, 7));
    return 0;
}

出力結果は?

7
10
3
コンパイルエラー
解説: add(3, 7) は a=3, b=7 を受け取り、3 + 7 = 10 を返します。

確認問題2 ― 値渡し

void change(int x) {
    x = 100;
}
int main(void) {
    int a = 5;
    change(a);
    printf("a = %d\n", a);
    return 0;
}

出力結果は?

a = 100
a = 5
a = 0
コンパイルエラー
解説: Cは値渡し。change の中の x は a のコピーです。
x を変更しても元の a には影響しません。a は 5 のままです。

確認問題3 ― void関数

void greet(void) {
    printf("Hello!\n");
    return 1;
}

このコードはどうなる?

正常にコンパイルされる
コンパイルエラー(または警告)
実行時エラー
Hello!と1が表示される
解説: void 関数は値を返せません。return 1;コンパイルエラーになります。
void関数からの return は return;(値なし)のみ許可されます。

確認問題4 ― 宣言と呼び出し順

#include <stdio.h>

int main(void) {
    printf("%d\n", square(5));
    return 0;
}

int square(int n) {
    return n * n;
}

このコードはどうなる?

25
コンパイルエラー(暗黙の宣言)
0
5
解説: square 関数が main より後に定義されています。
プロトタイプ宣言がないと、コンパイラは square を知らない状態で呼び出すため、暗黙の宣言警告やエラーになります。
解決策:main の前に int square(int n); と宣言するか、関数を main より前に置く。

結果

回答してください
関数の講座に戻るホームへ

この講座の理解を深めるおすすめ書籍

サイトで動きを理解し、書籍で演習量を補うと効果的です

📘
苦しんで覚えるC言語
MMGames 著
初心者向けの定番入門書。
Amazonで見る
📗
新・明解C言語 入門編
柴田望洋 著
図解が豊富で演習問題も充実。
Amazonで見る
📙
プログラミング言語C 第2版
B.W.カーニハン, D.M.リッチー 著
通称K&R。C言語の原典。
Amazonで見る

※ 上記リンクはアフィリエイトリンクです。購入によりサイト運営を支援いただけます。

この記事をシェア
X(Twitter)でシェア Facebookでシェア LINEで送る はてブ