• ベストアンサー

グローバル変数のサイズ

encyの回答

  • ency
  • ベストアンサー率39% (93/238)
回答No.9

私だったら、インデックスとデータを組にした構造体を定義して、必要な分だけ構造体サイズ分 malloc() しますね。 # C++ や Java だったら、クラスを定義してインスタンスを…と同じことですね。 で、データを探索する必要があるのであれば、たとえばリスト構造のような形にして、データはインデックスでソートしておけば、何とかなるかなぁ…と。。。

関連するQ&A

  • ユーザー環境変数の一覧

    システム環境変数とログインしている環境変数それと、 存在する全てのユーザーに対する環境変数を取得するプログラムをC言語作成したいのですが、どうすればよいのでしょうか? OSはWindows2000です。 言語は問いません、VC++2005かC#かVB.NETのどれでも構いません。

  • c言語で定義する変数のアドレス

    c言語の超初心者です。追いえてください。 c言語で2つの変数を定義しています。 char *a; char *b; この2つの変数に値をいれた際の動作で以下のようなことって発生しますか? a="1111" b="2222" aをprintfするとbにいれた値"2222"が表示される。

  • 動的な変数名のつけ方について

    ■環境 OS:XP 言語:C++ コンパイラ:Visual C++ 2008 char*やstd::string等で格納された文字列を使用して 変数を宣言することは可能でしょうか。 用途として、テキストファイル等から文字列を取得し その文字列を変数名としてプログラミング内で使用するという方法を考えています。 よろしくお願い致します。

  • C言語で1度に使用可能な変数の個数

    C言語で1度に使用可能な変数の個数について。 仮にメモリ3GB・32ビットのPCを用いたとして。 1つのプログラム中でdouble型の変数は最大何個使えるのでしょうか。 単に 3000000000/8 と考えても良いのでしょうか? 馬鹿な質問ですが宜しくお願いします。

  • visual c++ のグローバル変数宣言について

    visual c++で、 例えば下記のようにグローバル変数宣言するが 下記プログラムの「FileMei1[0][n1] = 0;」のところでブレークをかけてプログラムを走らせると、ウォッチウィンドウで「FileMei1エラー: 識別子 'FileMei1' はスコープ外です」とでてきます。 グローバル変数宣言のやり方間違っているのでしょうか? namespace TestCpp { extern char FileMei1[300][100]={ 0 }; public void aa{ for(n1=0; n1 < 100 ; n1++) { FileMei1[0][n1] = 0; } }

  • C言語の変数について

    C言語の変数について教えていただきたいです。 C言語で下記のような設定をした場合、変数A、Bに設定する値にはバイト数制限 はないのでしょうか? バイト数制限がなくなる場合、なぜそうなるのかを教えていただきたいです。 よろしくお願いします。 #include <stdio.h> void test( char **B); int main( int argc, char *argv[] ) { char *A = NULL; char *B = NULL; A = argv[1]; test( B ); return 0; } void test( char **B ) { strcpy(B, "ABCD"); return 0; }

  • Drawstringで変数内の文字を表示する方法について

    Drawstringで変数内の文字を表示する方法について c言語初心者です。 ウィンドウに文字を表示するDrawstringという命令で変数内の文字を表示したいです。 たとえば、 char *a="a" DrawString(0,0,a,65535); でコンパイルすると、 宣言の構文エラー というエラーが出ます。 改善点がどうしてもわかりません。 ご指摘お願いします。 あと、c言語では変数に文字を一文字ずつしか入れられないので、文字列を変数に保存して表示したい場合にはforなどでループして表示するしかないんでしょうか? 合わせてお願いします。

  • 24bit サイズの変数

    すみません教えていただけますか? c 言語(winではありません)で24bit サイズの変数を 使用したいのですがvoid*しかおもいつきません 24bit float を使用できますか? よろしくお願いします。

  • C言語のvoid型ポインタ変数について。

    C言語のvoid型ポインタ変数について。 C言語のvoid型ポインタ変数について質問があります。 組み込み系の開発を行っているのですが、現在使用しているシステムで、 提供されている "API" を介してアプリケーション部のソフト作成を行っています。 この "API" ですが、引数の多くはvoid型ポインタとなっています。 ある人がこの引数がvoid型となっているのを見て、 『なんでvoid型なんや??、C言語でアセンブラと違うんやから、void型なんかにしない方が良い』 とおっしゃいました。 この意味がよくわからなかったのですが、なぜ void型はよろしくないんでしょうか? -- 僕が思うに、APIなんやから引数を void型ポインタ にすることでどんな型にも対応できる 汎用的であると感じ、逆にこの方が良いのではと感じたのですが。。 -API例---- int _exApiKannsuu( char in_data, void* out_data ) "in_data" をもとに "out_data" を取得する。 どーやらこの "out_data" が void型 であるのががよくないらしい・・

  • 変数の大きさを超える代入

    現在作っているプログラムで、一定時間ごとに変数に一定値が 加算され続けるような場所があります。 基本的にはint型の最大値を超えることはまずないのですが、 C言語やC++でたとえばint型で宣言した変数に対し、x++; のように一定周期ごとに記述して加算してゆき、最大値である、 +2147483647を超えた場合、xには何が代入されているんでしょうか。 -2147483648~+2147483647が範囲ですから、一周して、 最低値である-2147483648に加算されてゆくことになるのでしょうか? それとも、超えることが予想される場合、最大値を超えたら0にするなど 明示的に何らかの対処をしたほうがよいのでしょうか。 プログラム的には中身の数値に関してはあまり関係ないので、 その変数型の範囲で不可なく動作するなら問題ありません。 超えることが予想される場合、対処するべきなのか、 放っておいてもよいのかどうかを教えていただきたいです。