ページ 11

無題

Posted: 2009年5月10日(日) 21:27
by
はじめまして餅です。
早速ですが質問があります。

グローバル変数などを用意してプログラムを書いているのですが
少し多くなってきましたので関数化しようかと考えています。

しかし普通に関数をつくったらローカル変数になってしまうかと思います。

どうすればよいのでしょうか?
int a = 0;  //  グローバル変数

int main(void){
  return 0;
}
これを
void function(void){
   int a = 0;  //  グローバル変数
}

int main(void){

  function();
  return 0;
}

グローバル変数を関数に

Posted: 2009年5月10日(日) 21:28
by
タイトルを書き忘れていました。
申し訳ありません。

Re:グローバル変数を関数に

Posted: 2009年5月10日(日) 21:34
by たかぎ
これでどうでしょう?
int *function(void){
   static int a = 0;  //  グローバル変数
   return &a;
}
C言語の場合はあまり利点を感じないかもしれませんが、C++だと大きなメリットが出てきます。

Re:グローバル変数を関数に

Posted: 2009年5月10日(日) 22:25
by
>>たかぎさん
それだと複数の変数をもてなくないでしょうか・・・?
できれば複数のグローバル変数をまとめたいのです。

Re:グローバル変数を関数に

Posted: 2009年5月11日(月) 00:39
by たかぎ
> それだと複数の変数をもてなくないでしょうか・・・?
> できれば複数のグローバル変数をまとめたいのです。

構造体にすればよいだけです。

Re:グローバル変数を関数に

Posted: 2009年5月11日(月) 14:21
by non
>グローバル変数などを用意してプログラムを書いているのですが
>少し多くなってきましたので関数化しようかと考えています。

グローバル変数が多くなったから、関数化するメリットって何ですか?