mainの外に変数 vs ポインタ渡し
C++についての質問です。プログラミング初心者ですが、よろしくお願いします。
最近、関数の外側でも変数を宣言できることを知りました。関数の外側で変数を宣言すると、全ての関数でその変数にアクセスすることができ大変便利なように思います。
「わざわざポインタ渡しなどする必要はないのでは?」と思ってしまいました。
これは何か問題があるのでしょうか?
初心者の言葉で説明しても理解しにくいかと思いますので、例として「足し算するプログラム」を以下に記載します。
ポインタ渡しで書くと、以下のような感じになるかと思います。
//●ポインタ渡し
#include "stdafx.h"
#include <iostream>
void func(int x,int y,int *pans){
*pans = x+y;
}
void main(){
int a=10, b=20, ans;
func(a,b,&ans);
std::cout << ans << std::endl;
}
しかし、mainの外に変数を宣言すれば
//●mainの外に変数
#include "stdafx.h"
#include <iostream>
int a,b,ans;
void func(int x,int y){
ans = x+y;
}
void main(){
a=10;
b=20;
func(a,b);
std::cout << ans << std::endl;
}
ansをポインタ渡しする必要なく、funcの計算結果をansに代入できました。
「●mainの外に変数」のプログラムはどのような問題や危険性を孕んでいるのでしょうか?
以上になります。長文お読みいただきありがとうございました。
よろしくお願いいたします。
お礼
非常に良く分かりました。ありがとうございました。