• ベストアンサー

C言語の配列と記憶領域の勉強をしています。

私は大学でC言語の勉強をしています。その中で今「配列と記憶領域」の勉強をしているんですが、「動的記憶領域を確保せよ」というプログラムをつくる問題がわかりません。そもそも「動的記憶領域」という言葉の意味がわからないので、詳しく知っていらっしゃる方がいれば、教えてくださいますか?よろしくお願い致します。

noname#22324
noname#22324

質問者が選んだベストアンサー

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.1

学校での課題とのことですので、聞くのも答えを教えるのはマナー違反となります。なので、ヒントだけ。  auto変数も動的だといえばそうなのです(屁理屈)が、Cでは動的に割り当てるメモリ領域といえば、参考URLに解説されているもののことを言います。 あとは、ご自分でどうぞ。参考URL(たまたま検索したら上位に出てきただけのページですが、特に嘘は書いてないようです)がほとんど答えみたいなもんですが。。。。インターネットの検索エンジンで調べると、いっぱい情報が見つかります。

参考URL:
http://www9.plala.or.jp/sgwr-t/lib/malloc.html
noname#22324
質問者

お礼

回答、ありがとうございました! もちろん、ヒントだけで十分です。 それが私の勉強なんで。 なのに、参考URLまで教えて頂いて大変感謝しております。 本当にありがとうございました。

その他の回答 (1)

回答No.2

まず、普通の配列とは int a[10]; というように宣言してかきますよね。例えば、 ある処理の時は、配列は10個で足りるけど、別の処理は100個欲しいという時、最大数の100で宣言しておけば足りるんだけど。 必要以上のメモリをとることはプログラム上よくないのと、1Mを超えるようなメモリを確保するときは動的配列を使ったりします。 動的記憶領域とは、プログラム内部でプログラムを書いてメモリを取ることをいいます。メモリの取り方は課題みたいなので自分で調べてね。

noname#22324
質問者

お礼

回答、ありがとうございました! はいっ、もちろん後は自分で調べます。 詳しく書いて頂いて大変感謝しております。 周りで質問できる方がいなくて、大変困ってました。 本も難しくて理解しにくくて。 本当にありがとうございました。

関連するQ&A

  • C言語で巨大配列を作るにはどうすれば良いのでしょうか?

    C言語で巨大配列を作るにはどうすれば良いのでしょうか? テストで作ってみた配列を用いたプログラムが動かなかったので(コンパイルは正常)、なんでだろうと思って調べてみると、巨大な配列はcalloc関数等を用いて作る必要があると知りました。 しかし正直解説サイトを見てもよく意味が分かりませんでした…。 例えばA[1000][1000][1000]の様な配列は、どの様に作ればいいのでしょうか? A[x][y][z]みたいに表現して、Aを変えて同じ様な配列を8個ほど作りたいです。 初心者なので勉強不足かも知れませんが、どうぞ宜しくお願い致します。

  • 配列とは

    C言語の配列についてなんですが Q.配列とは何か、言葉で説明せよ A.複数のデータが保存できる領域をまとめて確保したもの これでもよろしいでしょうか?

  • C言語 行列 配列

    現在、C言語を勉強中です。 C言語で (10000*10000)の大きさの行列を扱いたいです。 double a[10000][10000]の配列ではメモリ不足となってしまいます。 このような場合はどのようにプログラムを組んでいったら良いのでしょうか?

  • C言語の基礎的な質問---文字配列の初期化

    C言語の配列の初期化に関する質問です。 もし規格によって回答が異なる場合は、ANSIのCということにしてください。 関数の中に、 char str[ ]="ABC"; (イ) という宣言があるとします。(staticは付きません。) これは、 char str[ ]={'A', 'B', 'C', '\0'}; (ロ) と全く同じ意味でしょうか。  似て非なるものに char *str="ABC"; (ハ) というものがあります。この場合は、 strとは違うところに"ABC"('C'の次には'\0'があります。)という領域が確保されていて、 その先頭アドレスでstrが初期化されるのですよね。 (イ)(ロ)(ハ)のいずれの場合も関数の中に書かれているとすれば、 いずれもstrは自動変数で、関数実行時にstrの領域が確保されますよね。 (イ)は配列strの領域が確保されるときに、 配列strとは別のところにある"ABC"という領域の内容を、コピーして設定する、 ということでしょうか。 (ロ)は、配列の領域確保時にstr[0]を'A'で、str[1]を'B'で、str[2]を'C'で、str[3]を'\0'で、初期化する、 ということで、 配列とは別のところには"ABC"という領域はない、 という考えでよろしいでしょうか。 もしそうだとしたら、配列とは別のところに"ABC"という領域があるかどうかという点で(イ)と(ロ)は異なることになりますが、そう考えてよろしいのでしょうか。 それとも、そういうことは処理系に依存することなんでしょうか。

  • c言語のmalloc関数、またrealloc関数

    c言語のmalloc関数は確保するメモリの領域を、配列としてのみしか処理出来ないのですか。 つまり、malloc関数で確保したメモリの領域を変数、また多次元配列、また構造体としては処理出来ないのでしょうか。 c言語のrealloc関数は以前の確保したメモリの領域から、確保し直したメモリの領域の場所が変わるかもしれないという事ですが、この場合の場所が変わるという意味は、メモリの領域のアドレスが変わるという事でしょうか。 また、以前の確保したメモリの領域に代入していたデータが使用出来なくなるという事でしょうか。

  • C言語の勉強について

    C言語の勉強について わたしは、前からC言語に興味を持っており入門書を買って勉強しました。 基本的なことは理解できましたが、これからどうすればいいのかわからなくなってしまいました Cに興味を持つ前はHSPをしていたのですが、これはさすがにプログラムの基本さえわかっていれば ヘルプを開き自分で考えて、だいぶ本格的ななゲームも作れたのですが、Cは思ったとおりに行かなくて そもそも、コマンドプロンプトから実行するプログラムしかわからないのですが みなさんは、私くらいのころはどんなことをしていましたか? ひたすらプログラムを書いていましたか? それとwindowsアプリケーションの開発はもっと後になりますか? C言語ではどんなソフトを作ったりしたことがありますか?

  • C言語のメモリ領域確保

    ポインタ変数ををmain関数で宣言し、関数test()にて必要分だけ領域確保してそのアドレスをmain関数のポインタ変数に渡して利用することは可能でしょうか。 (サイズのわからないテキストデータを、十分に大きな配列に入れるのではなく、関数でメモリを動的確保して無駄の無い配列に入れたい等) C言語ではやはり無理で、構造体のリストにするのが一番でしょうか。 初歩的なことで申し訳ありませんがどなたかお願いいたします。

  • C言語の基礎を

    プログラマになりたくて、調べたら、まずはC言語から始めた方がいいと書いてあったので、さっそく教材(これからはじめるC言語の本)を買って基礎を覚えました。とりあえず買った教材は配列で終わっていたので配列まで勉強しました。基礎を覚えたら何をやればいいのかさっぱりわからないんです。ネットでCで書かれたソースを見てみると、まったく見たことのない言葉があったりして、Cをマスターするにはそういった言葉が全部わからないといけませんよね。プログラマの人はCぐらいできないとダメですよね。 配列が終わった後、何を勉強すればいいのか教えてください。 回答お願いします。

  • 大学でC言語を勉強するように言われました。

    大学でC言語を勉強するように言われました。 コンパイラはlinuxのgccを使えと指示されたのですが、そもそもコンパイラが違うとどう変わってくるのでしょうか?windows7で使えるコンパイラで勉強してはいけないのでしょうか? コンパイラの違いが大したものでなければ家ではwindows7で使えるフリーのコンパイラを使いたいのですが。もし、違うコンパイラで良いのならお勧めのものをどなたか教えてください。 また、C言語で調べてみたところC++のことばかり出てきました。 C言語とC++はあまり違いが無い、と聞いた覚えがあるのですが、C言語のことがあまり載ってないから替わりにC++を勉強する、というのではいけないのでしょうか? いくつも質問すみません。どなたかお願いします。

  • C言語のプログラミングの関数と配列を用いてそんなに

    C言語のプログラミングの関数と配列を用いてそんなに難しくないプログラムを考えているのですが、何かいいプログラムはないでしょうか?簡単なゲームや、簡単な貯金計算など種類は問いません。 そこまで難しくない何かいいプログラムを教えてください。

専門家に質問してみよう