同じだから、代入できるのです。色んな人が書くことで逆に3D_3Dさんを困らせている気がするので私はしばらくだまります。出来るだけ誰か一人の方針に絞って説明をして、それをフォローする形で進めてください。3D_3Dさんが理解する筋道を作る事が最優先だと考えます。【補足】それならこれが良いと案がないのが私が黙る理由です。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。横から口を挟んで申し訳ありませんが皆さんの議論を見ていますと考えさせられます。私はソフトに関して(他の事も)ド素人でポインターの事はよく分かりません。参考になるソフト(ソースリスト)、考え方を自分のソフトに書き加えるような場合、ポインターの部分を、まる写しにして加えています。このようにしてコンパイラーのエラーが出なければ、また作成したソフトが可笑しな動きをしていなければそれで良しとして、逃げています。これは自分の作ったソフトが自分で使うだけの代物で、他人に見せたり、それほど高性能な機能を必要としないからです。私の認識(勝手な認識、多分間違っているかも)1.ポインターを使ってもアプリの実行速度は、さほど速くならない?。2.ポインターを使ってもメモリー等の節約にさほど貢献しない?貢献してもメモリ等の単価が下がっている昨今あまり重要ではない?。3.ポインターを使うとアプリのソースがスマートに書ける?。ソースリストの拡張性、汎用性が向上する、そして作業の能率が向上する。4.ポインタを苦労して理解さえすれば、分かりやすいソースが書ける。ソースコードも小さくなる。5.ポインターを理解していなければ計算機の学校を卒業できず、ソフト技術者として、生活していけない。1.項の実行速度が上がるなら無理して勉強して、使ってみたく思います宜しくお願いします。横から口を挟んで申し訳ありませんが皆さんの議論を見ていますと考えさせられます。別トピックとしてあげてほしいかも。無理して使う必要があるのでしょうか?に関してだけ。無理して使う必要はありません。何かしら代替となるようなモノで逃げられるなら、それで構わないです。その都度いちいち結果優先でコーディングするということは、思った通りの結果になるまで、何度も試行錯誤することになります。ポインターに限らず、基本というか仕組みを理解しておけば、結果を想定してコーディングするだけなので、時間をとられずに済みます。理解しておくと言うのは大事なことですよ。*player;にしたときplayerだとうまくいかない理由の答えをちらっと述べます。ポインタの概念は、入れる箱を用意するという感じ。NULL;int型の実体の場所を示す変数。実体の場所を示す変数に場所でないものを入れるのはおかしい。(int*)0x1000;というふうにキャスト変換しないといけない。&a;これは事実、存在するアドレスを代入してますよね。player;Player_Init(&player);はok。*player;としたときはPlayer_Init(player);としますがこれって実体があることが保証されてますかね?されていないですよね。すくなくとも、Player_Initに渡す前に、playerに実体のある変数のアドレスを渡さなければなりません。これがうまくいかない理由だと思いますがどうでしょう?オフトピックこの独り言が一番近かったので、関数の受け渡し方と述べたのですけどね。思いついたのは・どのアドレスに割り振られるかわからないうちに初期化されるから、かなと思いました。今後どの勉強方法で行くのかは、3D_3Dさんに決めていただきたいと思います。3D_3Dさんの意見を待ちたいです。私はCASL2アセンブラで根本から理解するという道も検討しておりました。遠回りなんですけどね。三郎さんへ別トピックにして頂けると嬉しいです。カンタン解説:ポインタは大抵は配列の添字で代用可能です。配列の添字をポインタ代わりに置き換えを考えれる人はポインタも理解できると思います。ポインタが必須なのは大きな領域を動的確保するとぐらいでしょうか。それとポインタが高速性を発揮するのは、ソートなどの分野です。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。このような事なのかなと思っていますが、ポインターを使うメリットは何でしょうか?ポインタを使わないと、ファイル操作も、文字列操作もできません。コマンドライン引数も使えません。画像データも扱えません。第1引数にポインタを要求します。配列は、暗黙のうちにポインタに変換されて要素にアクセスします。関数は、暗黙のうちにポインタに変換されて関数を呼び出します。ポインタを使わずに実用的なプログラムを書くのは不可能です。6年前すいません、部活で返信ができませんでした。返信ありがとうございます。*player;にしたときplayerだとうまくいかない理由の答えをちらっと述べます。ポインタの概念は、入れる箱を用意するという感じ。NULL;int型の実体の場所を示す変数。実体の場所を示す変数に場所でないものを入れるのはおかしい。(int*)0x1000;というふうにキャスト変換しないといけない。&a;これは事実、存在するアドレスを代入してますよね。player;Player_Init(&player);はok。*player;としたときはPlayer_Init(player);としますがこれって実体があることが保証されてますかね?されていないですよね。すくなくとも、Player_Initに渡す前に、playerに実体のある変数のアドレスを渡さなければなりません。これがうまくいかない理由だと思いますがどうでしょう?オフトピックこの独り言が一番近かったので、関数の受け渡し方と述べたのですけどね。思いついたのは・どのアドレスに割り振られるかわからないうちに初期化されるから、かなと思いました。実体があることが保証されてないからエラーが出たのですか。返信ありがとうございます。今後どの勉強方法で行くのかは、3D_3Dさんに決めていただきたいと思います。3D_3Dさんの意見を待ちたいです。私はCASL2アセンブラで根本から理解するという道も検討しておりました。遠回りなんですけどね。自分としては、もうすこし勉強して、どうしても理解できないようならばパターンで覚えようと考えております。今はもう少しポインタを勉強したいと思います。返信ありがとうございます。住所録に消しゴムをかけて住所を消しておくイメージがしやすく、分かりやすかったです。newもmalloc()でも同じように扱えると思いますのでやってみます。6年前へにっくすさん返信ありがとうございました。「ただその都度いちいち結果優先でコーディングするということは、思った通りの結果になるまで、何度も試行錯誤することになります。ポインターに限らず、基本というか仕組みを理解しておけば、結果を想定してコーディングするだけなので、時間をとられずに済みます。理解しておくと言うのは大事なことですよ。言われてみればその通りです。分かっているけど中々実行できないものですね、そして私の場合もし理解できても少し経つと忘れてしまうのです(年齢からくる?)肝に銘じやってみます。かずまさん、返信ありがとうございました。私は配列までは、何とか少し分かっていますので、これから勉強すれば、かずまさんの言われる事が少しは理解できるかも分かりません。ソフト屋さん私に対する配慮有難うございます。ポインターの必要理由が理解できない人が非常に多い事が分かり、ネット検索してみましたら次のサイトが見つかりました。http://d.hatena.ne.jp/kura-replace/20120616/1339856279ここに書いてある事を読んでみましたら如何に私が無知であったかが分かりました。レベルの高いプログラムを目指すなら避けて通れないように感じました。可能な限り勉強してソースを掲示板に張れるようになったら再度教えてほしいと思います。それまでは皆さんの書かれている物を読ませてもらいます。有難うございました、お騒がせしました。6年前3D_3Dさんが理解できていない部分と重なるので書いておきます。ポインタは、アドレス値を複製し代入して使うので、関数の仮引数と同じく、実行時に与えられた値で動作します。手を加えることなく将来にわたって利用可能なプログラムを書くことができます。OSが、リリースされたときには存在しなかった未知のアプリケーションソフトを動かせるのもポインタがあるからです。実体があることが保証されてないからエラーが出たのですか。いうことは「構造体の実体があることが保証されていないうちに初期化処理をしようとしてエラー落ちしてしまう」ということでしょうか?そういうことです。ポインタを宣言するということは、場所(アドレス)を示すだけで、実体を示しているわけではないことにご注意くださいね。様々な理由がありまして、返信できませんでした。返信ありがとうございます。実体があることが保証されてないからエラーが出たのですか。いうことは「構造体の実体があることが保証されていないうちに初期化処理をしようとしてエラー落ちしてしまう」ということでしょうか?そういうことです。ポインタを宣言するということは、場所(アドレス)を示すだけで、実体を示しているわけではないことにご注意くださいね。実体でなくポインタを示すのですね。6年前>3D_3Dさんなんだか回答の対応ばかりで受け身になってしまったような気がします。ソフト屋さんも言いっているように方針を決めて状況を整理したほうがいいと思います。今後どの勉強方法で行くのかは、3D_3Dさんに決めていただきたいと思います。3D_3Dさんの意見を待ちたいです。私はCASL2アセンブラで根本から理解するという道も検討しておりました。遠回りなんですけどね。自分としては、もうすこし勉強して、どうしても理解できないようならばパターンで覚えようと考えております。今はもう少しポインタを勉強したいと思います。この返信だけでは不十分な感じもします。「どのように」というのをしっかり明記した方がいいと思います。決めることができないならばその旨を伝え、このトピックスの最初のように今現在のポインタの理解度を示してわからないところを一つづつやっていくというのもいい方法だと思います。ポインタを宣言するということは、場所(アドレス)を示すだけで、実体を示しているわけではないことにご注意くださいね。ポインタ型の変数を宣言すると、場所を示す値を格納する領域が確保されますが、その値が具体的な場所を示しているとは限りません。特定のオブジェクトが持つアドレスをポインタと呼びますが、その場合のポインタはそのオブジェクトを指すもの(値)です。オブジェクトは常に記憶域を持つので、場所を示すが実体を示さないという状況はありません。実体でなくポインタを示すのですね。えっと、、上記を言いかえると、ポインタを宣言するということは、実体でなくポインタを示すとなっちゃいますけど?(^^;ポインタを宣言するということは、実体でなく場所を示す、ですよ。ポインタ型の変数を宣言すると、場所を示す値を格納する領域が確保されますが、その値が具体的な場所を示しているとは限りません。これがよりしっくりくる。フォローありがとうございます。ポインタを宣言する、ではなくポインタ型の変数を宣言すると、ですね。ポインタ型の変数はNULLで初期化してるけど、これなんかは具体的な場所でないことを示すために使ってますよね変数の場所(アドレス)はNULLになることがないので(Cの規約でしたっけ?間違ってたらすみません)。特定のオブジェクトが持つアドレスをポインタと呼びますが、その場合のポインタはそのオブジェクトを指すもの(値)です。オブジェクトは常に記憶域を持つので、場所を示すが実体を示さないという状況はありません。ポインタについての説明ですね。ポインタ型の変数についてとは別ですね?「ポインタを宣言する」とは言わない方がよさそうですね。ごっちゃになってる(^^;私も言葉でうまく説明できていないあたり、何だか危ないですかね。6年前インターネットに繋がりにくいところに居るので返信ができませんでした。返信ありがとうございます。>3D_3Dさんなんだか回答の対応ばかりで受け身になってしまったような気がします。ソフト屋さんも言いっているように方針を決めて状況を整理したほうがいいと思います。今後どの勉強方法で行くのかは、3D_3Dさんに決めていただきたいと思います。3D_3Dさんの意見を待ちたいです。私はCASL2アセンブラで根本から理解するという道も検討しておりました。遠回りなんですけどね。自分としては、もうすこし勉強して、どうしても理解できないようならばパターンで覚えようと考えております。今はもう少しポインタを勉強したいと思います。この返信だけでは不十分な感じもします。「どのように」というのをしっかり明記した方がいいと思います。決めることができないならばその旨を伝え、このトピックスの最初のように今現在のポインタの理解度を示してわからないところを一つづつやっていくというのもいい方法だと思います。ありがとうございます。自分で方針が決められないのでおっしゃる通りに一つ一つ疑問を解決していくようにしたいと思います。誤った刷り込みが行われるパターン。*/&iの意味がスルーされポインタを渡すという部分だけが記憶に残りがち。丁寧に説明するとこんな感じ。*/ちなみにきちんと理解せず区別できないままだとこんなことに。*/変数の宣言と間接参照の組み合わせを元にして覚えていると思われる。ヌルポインタはあらゆるオブジェクトの持つアドレスと比較して等しくないことが保証される値です。それとは別に、初期化されていない一時変数の値は未規定です。返信ありがとうございます。実体でなくポインタを示すのですね。えっと、、上記を言いかえると、ポインタを宣言するということは、実体でなくポインタを示すとなっちゃいますけど?(^^;ポインタを宣言するということは、実体でなく場所を示す、ですよ。ポインタ型の変数を宣言すると、場所を示す値を格納する領域が確保されますが、その値が具体的な場所を示しているとは限りません。これがよりしっくりくる。フォローありがとうございます。ポインタを宣言する、ではなくポインタ型の変数を宣言すると、ですね。ポインタ型の変数はNULLで初期化してるけど、これなんかは具体的な場所でないことを示すために使ってますよね変数の場所(アドレス)はNULLになることがないので(Cの規約でしたっけ?間違ってたらすみません)。特定のオブジェクトが持つアドレスをポインタと呼びますが、その場合のポインタはそのオブジェクトを指すもの(値)です。オブジェクトは常に記憶域を持つので、場所を示すが実体を示さないという状況はありません。ポインタについての説明ですね。ポインタ型の変数についてとは別ですね?「ポインタを宣言する」とは言わない方がよさそうですね。ごっちゃになってる(^^;私も言葉でうまく説明できていないあたり、何だか危ないですかね。何か勘違いしていたようです。アドレスと実体をごちゃ混ぜにしてしまいました。6年前いままでポインタを勉強していて、自分には理解できないと思いました。ポインタを理解するのではなく、パターンで覚えたいと思います。自分がポインタを理解できるように解説して下さった皆様には本当に悪いと思います。ポインタを理解するよりもパターンで覚えた方が早いと考えました。方針を変えまして、これからはパターンで覚えたいと思います。身勝手なことを申し上げてしまい、申し訳ありません。6年前パターン法ですが話が進まないみたいので、3D_3Dさんがこういうことをやりたい!とパターンを提示したほうが良いかもしれませんね。関数に構造体ポインタを渡して関数先で構造体を書き換えたいとか、関数から構造体のポインタを持ち帰りたいとか、関数に配列を渡したいとかね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。パターン法ですが話が進まないみたいので、3D_3Dさんがこういうことをやりたい!とパターンを提示したほうが良いかもしれませんね。関数に構造体ポインタを渡して関数先で構造体を書き換えたいとか、関数から構造体のポインタを持ち帰りたいとか、関数に配列を渡したいとかね。シューティングなどのゲームだけでなく、他のことにも使えるように「どのような時にポインタを使うか」を教えていただきたいです。6年前ポインタに関してならアプリでもゲームでも大抵は関係ないです。どのパターンを覚えると良いかはパターンで覚えたことがないので私には難しいです。この状況にはどうしたらよいですか?って事なら答えられるんですが。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。ポインタに関してならアプリでもゲームでも大抵は関係ないです。どのパターンを覚えると良いかはパターンで覚えたことがないので私には難しいです。この状況にはどうしたらよいですか?って事なら答えられるんですが。疑問に疑問で返しますが、どうなんでしょうか?パターン暗記法の効能がよく分かっていない私です。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。それでは、その都度聞くのはダメでしょうか?それがパターンを覚えるってことだと思いますけど。結果優先でやるということは、思い通りの結果を得るまで試行錯誤することになる、と言いました。このトピックの主旨から外れると思いますので、ここはいったん解決にした方がいいかもしれません。【追記】私が言うことではない気がしたので、上の文言は取り消します。6年前パターンで覚えるというのは、ポインタを要求されたときに答える形になるので、どんなときに使うかを考える必要はありません。パターンで覚えることができても、自ら積極的にポインタを使うことにはほとんど貢献しません。アドレス演算子(&)を付けると型に*が1個増える間接演算子(*)を付けると型から*が1個減る*の数を揃えて使うというのが基本パターンですね。自作の関数にポインタを使いたかったら、とりあえず引数の型をポインタにしてしまい、*の数が揃うように適当にコーディングするといった感じになりますね。元々のスレの趣旨は、こうですよね。このトピックでポインタを克服したいと思います。上達したい、壁を超えたい、というのが目的ですよね?前スレのテーマもオブジェクト指向でしたし。私も「パターンとして覚える」というのは理解の放棄(延期)でしかないと思います。したら、似たようなスレを立てることになりそうじゃないですか?3D_3Dさんは高校生のようですので、「ポインタ」を「微積分」に置き換えて考えてみましょう。(私が高校生だったのも大昔だし、例えが変かもしれません)パターンを覚えて数学の実力がアップすると思いますか?逆に、理解なしで実力をアップさせるには、微積分のパターンをどれだけ覚えたらよいと思いますか?JavaやC#ならポインタは無いので、言語を変更することで当面の問題はなくなります。文系の大学を目指すことで微積分が必要無くなるようなものです。JavaやC#でプログラミングをしても、ポインタ程度に理解しにくい概念は何度でも出てくるでしょう。オブジェクト指向を使いこなすことは、ポインタを使いこなすよりもよほど難しいと思います。ポインタ完全攻略(読んだことない)オフトピックJavaやC#や文系大学をけなす意図は一切ありませんよ。返信ありがとうございます。疑問に疑問で返しますが、どうなんでしょうか?パターン暗記法の効能がよく分かっていない私です。ポインタを理解しないでプログラムが書けるから初心者の鬼門などと言われるポインタを意識しなくていい、などでしょうか?オフトピック実際、鬼門と呼ばれているかは知りませんが。返信ありがとうございます。それでは、その都度聞くのはダメでしょうか?それがパターンを覚えるってことだと思いますけど。結果優先でやるということは、思い通りの結果を得るまで試行錯誤することになる、と言いました。このトピックの主旨から外れると思いますので、ここはいったん解決にした方がいいかもしれません。【追記】私が言うことではない気がしたので、上の文言は取り消します。なんだかんだで試行錯誤することが一番の近道みたいですね。返信ありがとうございます。元々のスレの趣旨は、こうですよね。このトピックでポインタを克服したいと思います。上達したい、壁を超えたい、というのが目的ですよね?前スレのテーマもオブジェクト指向でしたし。私も「パターンとして覚える」というのは理解の放棄(延期)でしかないと思います。したら、似たようなスレを立てることになりそうじゃないですか?3D_3Dさんは高校生のようですので、「ポインタ」を「微積分」に置き換えて考えてみましょう。(私が高校生だったのも大昔だし、例えが変かもしれません)パターンを覚えて数学の実力がアップすると思いますか?逆に、理解なしで実力をアップさせるには、微積分のパターンをどれだけ覚えたらよいと思いますか?JavaやC#ならポインタは無いので、言語を変更することで当面の問題はなくなります。文系の大学を目指すことで微積分が必要無くなるようなものです。JavaやC#でプログラミングをしても、ポインタ程度に理解しにくい概念は何度でも出てくるでしょう。オブジェクト指向を使いこなすことは、ポインタを使いこなすよりもよほど難しいと思います。ポインタ完全攻略(読んだことない)オフトピックJavaやC#や文系大学をけなす意図は一切ありませんよ。微積分は習ってないので、別の物に脳内変換して考えました。たしかに、パターンを覚えただけでは実力アップは出来ないですね。理解しないと実力アップは望めないのですね。ポインタが無いのには驚きです。どの言語にもあると思っていたので。注意されているのかもしれませんが、全文引用は控えて下さい。必要な部分のみの引用にして下さい。スレが無駄に長くなり読みにくくなります。それと、まとめてレスを付けても良いのですよ。42764.htmlバグが多いので、迂闊なことするとすぐ落ちますが簡単なプログラムなら通ると思います。C言語の動作を映像的に表示しながら実行します。自分でコードを書いて納得できるまで色々試してみてはどうでしょうか?とりあえずのサンプル。付属のサンプルが難しそうだったので。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。ソフトを探す!」わざわざ、そんなソフトをインストールする必要はないと思います。次の図で理解できなければ、何をやっても無駄な気がします。なんだかんだで試行錯誤することが一番の近道みたいですね。明日からやってみたいと思います#私の後のISLeさんへのレスが無いみたいなので。ISLeさんが基本パターンを挙げられているので、頭に入れておいた方がよいですよ。6年前と、また3D_3Dさんが混乱しそうなので3D_3Dさんにどうするか決めて頂くまで、一旦だまります。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。6年前すいません、夏風邪を引いたようで返信が出来ませんでした。返信ありがとうございます。>既に注意されているのかもしれませんが、全文引用は控えて下さい。>必要な部分のみの引用にして下さい。スレが無駄に長くなり読みにくくなります。すいません、以後気をつけます。オフトピックこの位なら大丈夫ですよね?一応確認しておきたくて。返信ありがとうございます。ソフトを探す!」すいません、現在親のPCを借りてプログラムを書いているので、あまりいじりすぎると怒られてしまうので、自分のPCが使えるようになったら試してみたいと思います。返信ありがとうございます。+-----------+ちょっと不安ですがなんとなくならわかります。オフトピック以降、返信は大体3人ずつ位で区切ります。返信ありがとうございます。#私の後のISLeさんへのレスが無いみたいなので。ISLeさんが基本パターンを挙げられているので、頭に入れておいた方がよいですよ。すいません、ISLe様のレスを見落としていました。返信ありがとうございます。返信が遅れてしまい申し訳ありません。パターンで覚えるというのは、ポインタを要求されたときに答える形になるので、どんなときに使うかを考える必要はありません。パターンで覚えることができても、自ら積極的にポインタを使うことにはほとんど貢献しません。自分の様な初心者が無闇にポインタは使わない方が良いと思うので、ポインタが理解できない初心者にはいいと思います。アドレス演算子(&)を付けると型に*が1個増える間接演算子(*)を付けると型から*が1個減る*の数を揃えて使うを頭に入れてしまいます。考えがコロコロ変わってしまいますが、たいちう様の>「パターンとして覚える」というのは理解の放棄(延期)でしかないと思います。パターンではなく、ポインタを理解しようと考えました。自分は、ソースコード中にポインタが出たときに「なぜここでポインタを使うのか?」で詰まってしまいます。k;}で何故ポインタを引数に?で今は詰まります。返信ありがとうございます。>pを書き換えたいからポインタを使用しているのではないでしょうか?書き換えるのにポインタを使う必要が分からないです。:k;}pad=input_pad_or_key(pad,key);でもいいのでは?ということです。別にTaruさんの方法でも問題がないなら構わないんですよ。:k;(1)と(2)のどちらが素直か意見が別れそうですが。同じ動作であるということは理解されていますよね。(1)と(2)のそれぞれの動作を説明してみてください。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。:k;>(1)と(2)のそれぞれの動作を説明してみてください。(1)がわかりません。*pに*pかkの大きい方を代入する?ですか?(2)はpとkで大きい方を返すでしょうかね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。>(1)の*pと(2)のpって何が違うんでしょうか?(1)はパッドの番号のポインタ?よくわかりません。返信ありがとうございます。本筋と違うんですが大きく間違っています。ポインタの前にこのコードの機能自体を把握できていないって事ですけど。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。ポインタの方がわかりやすく、楽に書けるということでしょうか?違います。関数を呼び出すというのは、ある処理を任せる、仕事を委託するということです。「ある変数の値と、もう一つの値を比較して、大きいほうの値を最初の変数に代入する」という仕事をやり遂げることができます。ところが、ポインタを使わないほうの関数は、「ある値と、もう一つの値を比較して大きいほうを返す」という仕事しかしていません。関数の呼び出し側、すなわち仕事を委託したほうは、返された値を、最初の値を持っていた変数に代入するという仕事を自分でやらなければなりません。関数を用意して、仕事をやってもらうんだったら、代入操作もその関数にやってもらいたいですよね。ポインタを使わないと、関数は引数として「値」しかもらえませんから、それらを比較して大きいほうの値がわかっても、それをどの「変数」に代入すればいいのか分かりません。いう「変数」ではありません。ポインタを使ったほうの関数は、最初の変数の場所をもらっているので、そこから値を読みだすこともできるし、比較結果の大きいほうの値をその変数に代入することができます。いう変数そのものなのです。