ページ 1 / 1
このプログラムは何なんだろうか?
Posted: 2014年12月29日(月) 23:14
by yu
コード:
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;
}
このプログラムがどういうものなのか、解りません。 自分なりに考えたものですが、これは打ち込んだ数値をただ”関数呼び出し”の項目に当てはめるだけの物のように思えました。 これではいけないと思い、皆さんの意見をお聞かせ願います。
Re: このプログラムは何なんだろうか?
Posted: 2014年12月29日(月) 23:37
by box
mainから呼び出しているfunc_zの実引数であるa, bは、
func_z(仮引数c, dに対応)の中でいくら値を変えても
呼び出し元であるmainに何ら影響を与えない、という実例であろうと思います。
Re: このプログラムは何なんだろうか?
Posted: 2014年12月30日(火) 09:01
by box
もっと簡単な例で。
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;
}
Re: このプログラムは何なんだろうか?
Posted: 2015年1月03日(土) 21:47
by yu
返信ありがとうございます。できれば文章のみで意見を伺いたのですが。
Re: このプログラムは何なんだろうか?
Posted: 2015年1月03日(土) 22:40
by box
12/29 23:37
の回答をごらんください。
Re: このプログラムは何なんだろうか?
Posted: 2015年1月07日(水) 14:20
by yu
返信ありがとうございます。これでがんばってみます