このプログラムは何なんだろうか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yu

このプログラムは何なんだろうか?

#1

投稿記事 by yu » 10年前

コード:

int func_z(int dimx[], int c, int d){
	int y;
	cout << "cに代入する値を入力してください\n";
	cin >> c;

	cout << "dに代入する値を入力してください。\n";
	cin >> d;

	cout << "dimx[0]に代入する値を入力してください\n";
	cin >> dimx[0];

	cout << "dimx[1]に代入する値を入力してください\n";
	cin >> dimx[1];

	return 0;
}

int main(){
	int a = 0;
	int b = 0;
	int dima[2] = { 0, 0 };
	int ret_value;

	cout << "初期状態\n";
	cout << "aの値は=" << a << "\n";
	cout << "bの値は=" << b << "\n";
	cout << "dima[0]の値は=" << dima[0] << "\n";
	cout << "dima[1]の値は=" << dima[1] << "\n";
	cout << "*************************\n";
	
	a = 10;
	b = 20;
	dima[0] = 10;
	dima[1] = 20;

	cout << "メイン内部では代入後\n";
	cout << "aの値は=" << a << "\n";
	cout << "bの値は=" << b << "\n";
	cout << "dima[0]の値は=" << dima[0] << "\n";
	cout << "dima[1]の値は=" << dima[1] << "\n";
	cout << "************************\n";


	ret_value = func_z(dima, a, b);

	cout << "関数呼び出し後\n";
	cout << "aの値は=" << a << "\n";
	cout << "bの値は=" << b << "\n";
	cout << "dima[0]の値は=" << dima[0] << "\n";
	cout << "dima[1]の値は=" << dima[1] << "\n";
	cout << "*********************\n";

	system("pause");
	return 0;
}
このプログラムがどういうものなのか、解りません。 自分なりに考えたものですが、これは打ち込んだ数値をただ”関数呼び出し”の項目に当てはめるだけの物のように思えました。 これではいけないと思い、皆さんの意見をお聞かせ願います。

box
記事: 2002
登録日時: 14年前

Re: このプログラムは何なんだろうか?

#2

投稿記事 by box » 10年前

mainから呼び出しているfunc_zの実引数であるa, bは、
func_z(仮引数c, dに対応)の中でいくら値を変えても
呼び出し元であるmainに何ら影響を与えない、という実例であろうと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 14年前

Re: このプログラムは何なんだろうか?

#3

投稿記事 by box » 10年前

もっと簡単な例で。
aとbとを交換しようと思って、こんなプログラムを書いてみた。

コード:

#include <iostream>
using namespace std;

void swap(int a, int b)
{
    int t;

    t = a, a = b, b = t;
}

int main(void)
{
    int a = 100, b = 200;

    cout << "【交換前】" << endl;
    cout << "a=" << a << ", b=" << b << endl;
    swap(a, b);
    cout << "【交換後】" << endl;
    cout << "a=" << a << ", b=" << b << endl;
    return 0;
}
交換できてない。
ちゃんと交換するためには、
例1(ポインターを使う)

コード:

#include <iostream>
using namespace std;

void swap(int *a, int *b)
{
    int t;

    t = *a, *a = *b, *b = t;
}

int main(void)
{
    int a = 100, b = 200;

    cout << "【交換前】" << endl;
    cout << "a=" << a << ", b=" << b << endl;
    swap(&a, &b);
    cout << "【交換後】" << endl;
    cout << "a=" << a << ", b=" << b << endl;
    return 0;
}
例2(参照を使う)

コード:

#include <iostream>
using namespace std;

void swap(int &a, int &b)
{
    int t;

    t = a, a = b, b = t;
}

int main(void)
{
    int a = 100, b = 200;

    cout << "【交換前】" << endl;
    cout << "a=" << a << ", b=" << b << endl;
    swap(a, b);
    cout << "【交換後】" << endl;
    cout << "a=" << a << ", b=" << b << endl;
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

yu

Re: このプログラムは何なんだろうか?

#4

投稿記事 by yu » 10年前

返信ありがとうございます。できれば文章のみで意見を伺いたのですが。

box
記事: 2002
登録日時: 14年前

Re: このプログラムは何なんだろうか?

#5

投稿記事 by box » 10年前

12/29 23:37
の回答をごらんください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

yu

Re: このプログラムは何なんだろうか?

#6

投稿記事 by yu » 10年前

返信ありがとうございます。これでがんばってみます

閉鎖

“C言語何でも質問掲示板” へ戻る