プロが教える店舗&オフィスのセキュリティ対策術

いまc言語を独学で勉強しているのですがいまいちわかりません。
https://monozukuri-c.com/langc-original-handle/? …
このリンクでハンドル生成時の
構造体*pAccountは何をしているんですか?
これはポインタですか?
またメインソースのhcard1の値には何が入っているんですか?
またなぜ野口さんと諭吉さんのデータは残り続けているんですか?同じ関数を使っているので野口さんが諭吉さんに上書きされることはないんですか?

A 回答 (3件)

>構造体は練習問題などでふれたことがあります。


構造体をポインタで扱うことは練習問題とは多少異なるかもです。
特にmallocで取得したメモリー上の構造体や
構造体配列としてのポインタ等、実際に使ってみないと
なかなか構造体メンバーへのアクセス等、理解は難しいです。

>配列と似たような感じで自分で指定した容量分の番地を貸し出してくれるようなイメージで解釈してます。

ほぼその通りですけど、mallocを複数回呼んだことは?
当然別々のメモリーが確保されてそれぞれのポインターが返るので
上書きされようがないことはわかりそうに思うのですけど・・。

コンパイラやデバッガーとかはどういう環境ですか?
実行中の変数やポインタの値はどうやって確認されてますか?

ちなみに私はエムアロックと呼んでます。
メモリーをアロケートするという意味が
マロックは判りにくくする気がして・・・。
    • good
    • 0

う〜ん・・・まぁ・・・どうしたもんかねぇ・・・。



> いまc言語を独学で勉強しているのですがいまいちわかりません。

まぁ、分からんだろうねぇ。
リンク先は見てみたけど。
ハッキリ言うと、「分からない」ってのは貴方がバカだから、とかそういう理由じゃないんだ。
そのリンク先のサイトが「(オブジェクト指向じゃない)C言語を使ってオブジェクト指向(らしき)」プログラミングをさせよう、って「トチ狂った」事やってんのが悪いんだよな、言っちゃえば。
オブジェクト指向。分かる?
もし知らないのなら、そのページを「理解しようとするのは止めて」、他の教材探した方がエエんちゃうか。
C言語で「オブジェクト指向っぽいプログラムを書くのは可能」だけど、それは「オブジェクト指向を知ってる」人がやるから出来るわけであって、まずは「オブジェクト指向」と言う考え方を知らんとアカン。
んで、通常、「オブジェクト指向を学ぶ」のなら(JavaとかRuby、あるいはSmalltalkやEiffelみたいな)「オブジェクト指向言語」を使うんだよ。当然だよな。
ナニカを学ぶには、それに適したツールが必要だ、って事だ。

「今回始めてプログラミングを学び始めて、なおかつオブジェクト指向言語じゃない言語でオブジェクト指向を学ぼう」

とするのは、無理ゲーだ。特に「オブジェクト指向」って考え方は、能書き色々垂れるヤツ(っつーか本)は多いけど、ハッキリ言って「難解な」考え方、なんだ。
言っちゃえば、そこは全然「C言語の話」でも何でもないんだ。まずは「C言語と関係ない」オブジェクト指向のアイディアを知らんとアカン。
貴方の混乱は、まず第一に、「オブジェクト指向がナニカ」全く知らん事に起因してんじゃねぇの?そのページ見て「ああ、こうやってプログラムすればいいのか!」と感じるんじゃなくって、「なんでこんな方法でプログラム作ってんだ?」と感じてるならそういう事、だ。
分かる?

> これはポインタですか?

言わずと知れたポインタだ。
でも「オブジェクト指向」的アイディアで言うとそれも枝葉末節なんだよ。

> またメインソースのhcard1の値には何が入っているんですか?

銀行口座のデータでしょ?

> またなぜ野口さんと諭吉さんのデータは残り続けているんですか?同じ関数を使っているので野口さんが諭吉さんに上書きされることはないんですか?

これはだから逆なんだよ。
「野口さんが諭吉さんに上書きされることはない」ような仕組みを作る為に「オブジェクト指向」って考え方があるんだ。
だからCでそれをエミュレートするように書けば・・・と原因と結果を逆に考える必要があるんだ。

ぶっちゃけた話、「銀行口座ネタ」ってのは「図形の面積計算」と合わせて、一番「オブジェクト指向」の概念を説明するのに使われるネタなんだ。
「野口さんの銀行口座」と「諭吉さんの銀行口座」は絶対重複しないし、そして「野口さんの銀行口座を弄っても」、諭吉さんの銀行口座には「まるで影響を与えません」と。「オブジェクト指向って凄いでしょ?」ってオチを付ける為に出す「あるあるネタ」なわけね。
だからハッキリ言っておくけど、

・「オブジェクト指向を知らない」んで、件のページで学ぶのは諦める
・「オブジェクト指向言語で簡単なオブジェクト指向の実例を扱った後に」件のページに再挑戦する

と、貴方の前には2つの道があるんじゃないかな、って思います。
    • good
    • 0

>構造体*pAccountは何をしているんですか?


構造体をご自分で使った経験は?

>これはポインタですか?
ポインタですね。構造体のポインタを使った経験は?

>またメインソースのhcard1の値には何が入っているんですか?
>またなぜ野口さんと諭吉さんのデータは残り続けているんですか?同じ関数を使っているので野口さんが諭吉さんに上書きされることはないんですか?
mallocを使った経験は?

基本的にコードは使用経験やデバッグ経験で理解できるようになります。
読んだだけでわかることはまず無いと思って下さい。

使用OS、コンパイラ、デバッグ環境はそれぞれの方で異なるので
まずそれを明らかにされては?
助言も違ってくると思います。
    • good
    • 0
この回答へのお礼

構造体は練習問題などでふれたことがあります。
マロックも触れたことがあります。
マロックに関しては少ししか触れていないのでそこまで詳しくまでは理解出来ていませんが配列と似たような感じで自分で指定した容量分の番地を貸し出してくれるようなイメージで解釈してます。
構造体ポインタはないですがポインタなどは触れたことがあります。

お礼日時:2023/07/06 20:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!