- ベストアンサー
変数・関数 メモリの関係 本の紹介お願いします
こんにちは。C言語を勉強しています。文法はある程度理解できました。 そこで疑念がわいてきたのですが、プログラムはメモリ上にロードされてCPUがそれを処理すると思いますが、メモリ上では変数や関数はどのように扱われているか? その辺がモヤモヤしていてはっきり勉強したいと思います。どこから勉強していいのかわからず、良い本がありましたらご紹介頂けませんでしょうか?宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- C言語のStatic変数について
現在、C言語の勉強しながらゲームプログラムにチャレンジしています。 二つの関数で利用する変数を作りたかったので、Static宣言された変数を容易しました。 ですが、この変数、一度処理が終わると当面使わない変数なのです。 (ただし、処理途中は何度も呼び出されるので値は保持しなければいけません) よって、メモリ上に延々居座られるのが邪魔に思えて仕方ありません。 実際、大したことないだろうとは思うのですが。 このStaticで宣言された変数を、自分の好きなタイミングでメモリ上から解放するような処理はできませんか? もしくはメモリ上に居座ることのない処理の仕方などありましたら、 考え方を教えていただけるとうれしいです。よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 関数の最初の変数有効期限について
最近C言語を勉強しているのですが変数の有効範囲について教えてください。 ローカルやグローバル変数があるのが分かって関数内の変数も関数内でのみ有効というのも理解したのですが int a( int b ); という関数の最初に書く括弧の中のbと宣言している変数も関数内に含まれているという事で良いのでしょうか?。
- ベストアンサー
- C・C++・C#
- C言語のいわゆる「良書」を紹介してください
仕事上C言語を勉強しております。 本屋に行っても書籍が多すぎてどれがいいのかよくわからないです。そこで皆さんのお勧めの「良書」と言われるC言語の本を紹介していただけないでしょうか? 私が欲しいのは「文法」の本と「プログラミング方法」の本の2つです。私のリクエストとしては 【文法】 ・文法があますところなく網羅されている ・話の展開が系統立てて、よくまとまって読みやすい ・K&R本よりも詳しい 【プログラミング方法】 ・メモリやキャッシュの効率的な利用法など、ハードの仕様も考慮に入れたプログラムの組み方について解説している。 ・面白くてトリッキーなアルゴリズムが紹介されている 以上、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- Static変数の必然性について
今晩は、Cの初心者です、宜しくお願いします。 Global変数とStatic変数の違いがよく分かりせん。 本を読むと、Global変数は「常に同じメモリ上に置かれどの関数からも使用できる」、Static変数は「常に同じ メモリ上に置かれ定義された関数からのみ使用できる」とかいています。 Global変数がどのようなもので、その必要性みたいなものは理解出来るのですが、Static変数については、 Global変数との違い、その必要性、実際にどのような場合に使うのかその必然性みたいものがあるのか理解できません。 いくら本を読んでも、理解出来ないのですが、宜しくご教示願います。
- ベストアンサー
- C・C++・C#
- main関数内のローカル変数について。
main関数内でローカル変数は使用しない方が良いのでしょうか? 例えばmain関数内でループ処理(無限ループ)を行なう場合、 プログラムを終了するまで、ローカル変数は解放されないように思います。 なので、プログラム実行中は常にスタックに積んである状態になってしまいます。 この場合main関数内の変数は静的変数にするのが望ましいのですか?? よろしくお願いします。
- 締切済み
- C・C++・C#
- 関数がどうしても分かりません
こんにちは。 情報処理の専門学校に通っている1年です。 最近C言語の関数を習い始めたのですが、学校の授業が理解できず、 参考書などを読んでもいまいち理解できません。 頭が少し硬いようで、アルゴリズムがうまく考えれないようです。 この前の授業で Visual Basic で関数のプログラムを作る授業をしました。 n=辺 i=行 j=数で、 *(アスタリスク)を入力した数を辺として、三角形を出力するという関数を作りました。 たとえば * * * * * * * * * * のような三角形や、これの逆の∠の形の三角形です。 *(アスタリスク)はfor(i=1;i<=n;i++)で繰り返しました 関数は1つだけ作ればいいと言われたのですが、1つだけでどうしてできるのかが分かりません。 関数を使って*で三角や逆三角形や四角形や台形などの形を作るにはどのようなプログラムにしたらつくれるのでしょうか? 私自身、理解できていないので、質問の意味が分かりずらくてごめんなさい。 また、プログラムを作る際の考え方やアドバイスなどあればお願いします。
- ベストアンサー
- C・C++・C#
- グローバル変数のよくない使い方とその改良例
C言語の勉強をしています。 グローバル変数を多用するのはあまりよくないと聞きました。 どこでいつ書き換えられるのか把握しづらい等々、言われることは理解できるのですが、 では具体的にどうするのがよいのか分からないのです.. 例えば、異なったファイル内の複数の関数から参照したり、書き換えたいような変数が あった場合、ついついグローバル変数を使いたくなってしまうのですが、このような ケースではどのようにするのがよいのでしょうか。 簡単なC言語の具体的な例で教えてください。 よろしくお願いします。
- 締切済み
- C・C++・C#
- プログラムがいっぱい載っている本
C言語を勉強しているのですが、 プログラムがいっぱい載っている本てありますか? 問題集でも何でもいいですが、 短いプログラムがいっぱいある(普通の本はこれ)より 長くていろいろな文法が混ざっているやつの方がいいです。 まあ何でもいいのでそういう本があったら教えてください。
- ベストアンサー
- C・C++・C#
- 関数と変数と定数と式をまとめて [C言語]
はじめまして。私はC言語初心者です。 C言語では、関数の引数や変数への代入や配列の添え字などに、変数や定数や、式や関数の値を利用できるじゃないですか。私は今C言語について勉強したことをファイルにまとめていっているのですが、上記のようなことを説明するたびに「関数と変数と定数と式」と書くと長ったらしくなってしまいます。そこで、これらをまとめていう言葉があったら教えて欲しいのです。 回答よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 関数をメモリにマッピングしてみたいのですが質問させてください。
関数をメモリにマッピングしてみたいのですが質問させてください。 C言語で以下のようなプログラムを完全に趣味で作って遊んでみました。 まぁ当然のことながらエラーで落ちてしまうのですが(関数ポインタと変数のポインタはメモリの位置が違うので当然と言えば当然なのですが)どうにかしてこんな感じのことをやる方法ってないですかね? #include <memory.h> typedef void ( *LPTESTFUNC )(); void test(){} main() { #define BUFFER_SIZE 100 char buffer[BUFFER_SIZE]={0}; memcpy( buffer, test, BUFFER_SIZE ); ( ( LPTESTFUNC )buffer )(); } /** VisualStudio2008 AcademicEdition Windows7 64bit UltimateEdition Core i7 920(2.67GHz) メモリ:12GB 言語:C言語 */
- ベストアンサー
- C・C++・C#
お礼
沢山のリンクありがとうございます!感謝です!itproの説明はわかりやすそうです!本も勉強しがいのありそうです!