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: このプログラムは何なんだろうか?
mainから呼び出しているfunc_zの実引数であるa, bは、
func_z(仮引数c, dに対応)の中でいくら値を変えても
呼び出し元であるmainに何ら影響を与えない、という実例であろうと思います。
func_z(仮引数c, dに対応)の中でいくら値を変えても
呼び出し元であるmainに何ら影響を与えない、という実例であろうと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: このプログラムは何なんだろうか?
もっと簡単な例で。
aとbとを交換しようと思って、こんなプログラムを書いてみた。
交換できてない。
ちゃんと交換するためには、
例1(ポインターを使う)
例2(参照を使う)
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;
}
#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;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。