ページ 11

無題

Posted: 2008年12月24日(水) 14:29
by へたれ
教えていただきたいのですが、
#define O 10000
といった感じにOに10000の容量をとるのは分かるのですが、
この確保できる容量は、各PCによって違うものなのでしょうか?それとも共通で決まっているものなのでしょうか?

Re:無題

Posted: 2008年12月24日(水) 14:40
by ざこ
defineは文字列を文字列で置き換えるのではないでしょうか
私も初心者なんでよくわかりませんけど。
http://www9.plala.or.jp/sgwr-t/c/sec18.html 参照です。

Re:無題

Posted: 2008年12月24日(水) 15:04
by 御津凪
#define はマクロ定義文です。
簡単に言えば、
#define O 10000
の場合、 O を 10000 に置き換えてくれるものです。
#define N 10
int main(){
    int i;
    for(i=0;i<N;i++){ // N回繰り返す(この場合は10回)
        printf("i = %d\n",i);
    }
    return 0;
}
主に固定値や簡単な共通処理などに使われます。
上記の例で、 10 を 100 に代えれば、 N は 100 に置き換わり、
100 回ループします。

本題ですが、その O が何を意味しているかで意味合いが変わります。
(固定値、最大数、など)
「容量」という単語から、何かの量を表すものでしょうか?

Re:無題

Posted: 2008年12月24日(水) 15:11
by Dixq (管理人)
#define N 10000

int arr[N];

みたいに使っていらっしゃるのでしょうか?
ローカル変数で、大きな配列を作ろうとして困っていらっしゃるのでは無いかと思います。
そんな時は、前にstaticと付けるか、グローバル変数にしてはどうでしょう。

Re:無題

Posted: 2008年12月24日(水) 16:06
by lbfuvab
英語でdefineは「定義する」と言う意味がありますので、
#define A 1000
を「Aを1000と定義する」と考えるといいと思いますよ。

Re:無題

Posted: 2008年12月24日(水) 16:11
by へたれ
皆様、回答本当にありがとうございます。
まず質問の説明が不十分だったことを誤ります。

今回のdefineの使い方としてはDixg様の言うとおり大きな配列に当てようとし、困っていました。
staticをつけてグローバル変数にして解決することが出来ました。

ざこ様
サイトの紹介ありがとうございます。これから参考にしていきたいと思います。
御津凪様
丁寧な説明でありがとうございます。
Dixg様
説明不測の質問ですいませんでした。また回答ありがとうございました。

Re:無題

Posted: 2008年12月24日(水) 16:12
by へたれ
すいません解決しました。