[osask 6899] Re: BOARD: 変数の初期化

  こんばんは、川合です。


FORM-Akkie さんは 2004/04/06 21:35:26 の「[osask 6898] BOARD: 変
数の初期化」で書きました:

>ポインターを宣言しmallocで領域を確保すればよいと思います
>具体的には
>*char hoge;
>hoge=malloc(sizeof(char)*5))
>でchar形の5個の配列ができると思います
>間違ってたらごめんなさい

  多分ちょっと書き間違いです。

    char *hoge;
    hoge = malloc(sizeof (char) * 5);

・・・ということが言いたかったのでしょう。

  とりあえず、配列変数のサイズを完全に自由にすることは、普通の宣
言ではできません。これはほぼ全てのC言語が共通に持っている制約で
す。どうしてもやりたい場合は、JUGZZYさんの説明どおりmallocを使う
のが普通です。

---

  ただ、ちょっと確認したいのですが、

>width = 40;
>s[width + 4];

  というとき、このwidthの範囲について最大値を想定できないもので
しょうか。最大でも100にしかならないと知っていれば、

    int s[104];

とやっておけば済むことです。この場合もしwidthが40であっても、残
り60個分のメモリを使わないだけです。これはせいぜい240バイトであ
って、たいした問題にはなりません。mallocを使うとそれだけで300バ
イトくらいは増えますからね。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! osask.jp  kawai@imasy.org
Homepage http://osask.jp/

ML番号でジャンプ
ML単語検索