プリプロセッサじゃあるまいし、置き換えなどしません。値を返してはいけません。returnもありません。//ここでGetA関数が出てきた理由が最大の謎。100)というのが書かれているんじゃないの?SetA()は値を返しません。そのとおりなら「SetA関数とGetA関数の二つの機能を併せ持った関数」はどうやって書けばいいのでしょうか?(ここができるかどうかで”関数やクラス”という概念をちゃんと習得できているかのターニングポイントになると思ってます。関数のオーバーロードを使うか、aのアクセス子をpublicにすればいいと思います。9年前まずコードを載せる際はcodeタグで囲っていただきますようにお願いします。int型の関数GetAを宣言。戻り値がvoidということは戻り値がないということ????};まず、関数に型は有りません、関数の戻り値と引数に型があります。aや_aのことについて「メモリを確保」というのは、ちょっと違ってますね。引数は必要な数だけ宣言できる引数名は実体を宣言するときは必須ですが、プロトタイプ宣言の際は省略可です。voidだったら戻り値は無しじゃないの???}まず、SetAですが、そのような書き換えはされません。これは、aに_aの値を代入しているだけです。この関数の戻り値はvoidでvoidは戻り値がないことを示しますので、returnは無くてもいいです。後、コンパイラはreturnで関数の終わりを判断してるのではなく{}の対応で関数の終わりを判断しています。引数と戻り値の位置を勘違いしているようです。//CTestをインヘリテンス(?)する。//ここでGetA関数が出てきた理由が最大の謎。0;}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\argvにはコマンドライン引数が入れられます。argcはその引数の個数です。インヘリテンスはインヘリタンスの間違いだとしても継承と言う意味なので、実体を意味するインスタンスの間違いじゃないでしょうかでしょうか?この時100になったのは、クラスCTestのメンバであるaです。コンパイルエラーになるのは、引数が足りてないからですね。ここは、GetAを呼ぶことで、それがaの値を返すのでそれをprintfの引数に使用しているわけです。SetAにそのような機能はありません。そのとおりなら「SetA関数とGetA関数の二つの機能を併せ持った関数」はどうやって書けばいいのでしょうか?(ここができるかどうかで”関数やクラス”という概念をちゃんと習得できているかのターニングポイントになると思ってます。なにぶん素人ですので、思い違いをしているかも知れませんが、自分なりの解釈を書くことで正しい知識を持った方に”どこが分かってないか”をご指摘していただけると非常に助かります。SetAは「aの値を取得する」のではなく「aに第一引数の値を代入」する関数ですね。補足的に追加しますとsetとgetに分かれているのは、オブジェクト指向のカプセル化と言う概念を実現するためです。aをpublicにしたりするのは基本的に避けるべき行為だと思ってください。それとsetでセットした値を持ち帰ることは出来ますが、そんな関数作って使うのか?と言えば返り値なんて使わないと思います。引数のままの値が戻ってくるだけなんて意味ないじゃないですか。いう関数は、もっとプログラムが大きくなってsetとgetがぜんぜん違う離れたコードの場所にあるようになって意味が出てくるものです。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。自分が思っていたよりももっと基本的なことがわかっていなかったようです。//aの変数の中身を返り値にする}int(中にはaの中身である100が入っている)CTest::GetA(void)GetA関数には戻り値がセットされているため、printf関数ではGetA関数が呼ばれた。_a)と書いたのかが分からないのです。コードタブの存在を知りませんでした。>>また、aや_aのことについて「メモリを確保」というのは、ちょっと違ってますね。みたいな?>>また、この関数の戻り値はvoidでvoidは戻り値がないことを示しますので、returnは無くてもいいです。>>後、コンパイラはreturnで関数の終わりを判断してるのではなく{}の対応で関数の終わりを判断しています。>>どうやら、引数と戻り値の位置を勘違いしているようです。おっしゃるとおり引数と戻り位置を勘違いしておりました。戻り値とreturnの関係は他の入門サイトを見て理解を深めました。(int)」の意味が分からないので、また勉強してみます。自力で理解できなければ新しいスレッドを立てさせていただくと思いますので、またお力添えをしていただけると助かります。_a)と書いたのかが分からないのです。戻り値は必要ないからです。aの値が欲しければGetAを使えばいいのです。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。様>>>>こういう関数は、もっとプログラムが大きくなってsetとgetがぜんぜん違う離れたコードの場所にあるようになって意味が出てくるものです。思ってしまいます(これは私がクラスという概念をよくわかってないのが悪いのですが・・・)それ、むちゃくちゃ文法的に出鱈目ですよ。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。時間軸がずれてしまってすいません><カプセル化の話は伺ってますし、参考書などを読み直して理解はしたつもりです。aの値を外部から勝手に書き換えられないように、praivateの中からしかaの値をいじれないのは理解しているつもりですが・・・これは本を読むより、コードを書いていって、慣れるしかないのかなぁと思ってます。関数というものは自販機のようなもの。100円を入れるとなんか知らんけどジュースが出てくる。これは”猫でもわかる~”の書籍で納得しました。SetAのような返り値を持たない関数に関してはちょと腑に落ちないのです。今行くよー」という感じで1.自分の中で決められた処理をする2.処理の結果を他の人に渡す。いう二つの行動ができるものだという認識です(あくまで私の脳内)。私の仕事は終わったもん。>>また、aや_aのことについて「メモリを確保」というのは、ちょっと違ってますね。みたいな?うーん、まぁ、大体そんな感じですね・・・ちなみに、0x000000~0x000032=aはちょこっと違いますね。0xなので一般に16進数なので、後ろの値は50になってしまいます。0x32としたのは4バイトが32ビットになることからかと思いますが、メモリのアドレスは、一ビット単位ではなく、一バイト単位ですので、0x00~0x03になります。(int)」の意味が分からないので、また勉強してみます。自力で理解できなければ新しいスレッドを立てさせていただくと思いますので、またお力添えをしていただけると助かります。引数は一つで第一引数の型はint型の値を取るといった感じでしょうか。[hr][修正]0x01==>0x04[修正]みけCATさん>>そうですね、二重でミスりましたwww指摘ありがとうございます。0x32としたのは4バイトが32ビットになることからかと思いますが、メモリのアドレスは、一ビット単位ではなく、一バイト単位ですので、0x00~0x01になります。関数というものは自販機のようなもの。100円を入れるとなんか知らんけどジュースが出てくる。これは”猫でもわかる~”の書籍で納得しました。SetAのような返り値を持たない関数に関してはちょと腑に落ちないのです。いわゆる「数学の関数」はベルさんの仰る通り、(たぶん)必ず帰ってくる数値があります。返り値があるわけではありません。SetAのような関数でも、処理が成功したかどうかを返り値で返すものもあります。SetとGetを同時にやって意味があるのか?って実際に使ってみてください。a;}すごく使えませんから。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。思ってしまいます(これは私がクラスという概念をよくわかってないのが悪いのですが・・・)それ、むちゃくちゃ文法的に出鱈目ですよ。混乱させるようで申し訳ありませんが、このソースは文法的にも正しく、問題なく実行でき、さらに(間違った解釈でしょうが、多分ベルさんが意図しているように)正しく100が出力されます。変数名(初期値);の書式でオブジェクトの初期化宣言が可能です。初期値の型は変数の型と一致している必要はなく、その型に変換できるものであれば何でも構いません。SetA(100);はint型の変数SetAを宣言して100で初期化しています。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。開始しないようにしましょう。*/こんな癖があるようなら、早く治しましょう。開始しないようにしましょう。*/こんな癖があるようなら、早く治しましょう。それは、最初に書いてある「某”ゲームプログラミング応援サイト”」が犯人だと思うわけですが、_aはたしかにやめたほうが良いですね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返り値があるわけではありません。頭の中が整理できました>>ただしSetAのような関数でも、処理が成功したかどうかを返り値で返すものもあります。戻り値の型のみが異なります。今も参考書無しで急いで書きましたので細かいミスとかあるかも知れませんがイメージは伝わりますでしょうか?ちなみに_aという書き方ですがsoftya(ソフト屋)様がおっしゃってくださってるとおり某サイトからのコピペなのが原因です。アンダーバーを使うのはよくないということを再認識いたしました。ベルさんに尋ねたとします。