ページ 11

関数

Posted: 2017年7月04日(火) 13:56
by hot
以下のプログラムをmain関数、func1関数、func2関数の順に定義するプログラムの書き換え方を教えてください
いつもコンパイルエラーがでてできません
プロトタイプを宣言を利用したほうがいいとアドバイスをもらいました
#include<stdio.h>
#include<math.h>

int main()

double func2(double a)
{
return(a*2);
}

double func1(double a)
{
return(func2(a));
}

int main()
{

Re: 関数

Posted: 2017年7月04日(火) 15:06
by purin52002
こんにちは

main関数、func1関数、func2関数の順に定義するプログラムの書き換え方は以下のようになります。
(func1、func2の中身は適当)

コード:

int main()
{
    func1();
    func2();
}

void func1(void) {}
void func2(void) {}
これで、main関数、func1関数、func2関数の順に定義できました。
しかしこのままではエラーが出ます。

プログラムは基本的に上から下へ実行され、
急に出てきたfunc1やfunc2にコンパイラが驚いてしまうからです。

これは変数を扱うときにもいえます。

コード:

int main()
{
    a = 10;//エラー aってなんだ?
}
こういうときは宣言を行います。

コード:

int main()
{
    int a;
    a = 10;//エラーにならない
}
関数も同じです。
関数の宣言を行います。(これがプロトタイプ宣言)

コード:

void func1(void);//ここで関数宣言
void func2(void);

int main()
{
    func1();
    func2();
}

void func1(void) {}
void func2(void) {}
こんなんでどうでしょう?