回答受付が終了しました

c言語のポインタについて質問です。ポインタによって複数の値を出力できるメリットがあると思うのですが、これは関数マクロを使えばわざわざ難しいポインタを使わなくても出来ますよね?それなのに何故ポインタとい

回答(10件)

0

大筋は諸氏が述べているから違う切り口で。 c言語固有の問題があります。それまでの変数は全て暗黙のポインタでした。 ところがcになってコールバイリファレンスからコールバイバリューになり実体の複製になりました。結果、データの引き渡しが弱くなりました。 それまではサブルーチンの引数に渡した変数は内容を書き換えれば親元に反映できました。これができなくなりました。 ポインタはコールバイリファレンスを部分的に再現するオプションという意義があります。

0

特定のコードを見て、「マクロ関数を 使って簡単に出来る箇所をわざわざ ポインタを使っている」と感じた そうですね。 実のところ具体的にそのコードを見 てみないと貴方に同感できるかどう かわかりません。 そしてまた、そのコードが書かれた 環境がどういうものであったかもまた 重要です。 実際の開発環境では色々と細かい制約が 追加で課せられることも多いようです。 「マクロ関数使用禁止」みたいな追加 ルールがコーディング規約という名で 課せらることもあることでしょう。

ポインタは、様々な制約の元では 結局頼らざるを得ない最終手段で あるという側面もあります。 そのため場合によってはコードは 読み辛くなるかもしれません。

0

ポインタと言うのはメモリ範囲を簡単な約束で受け渡せると言う利点です。 分かりやすい例としては文字列ストリングです。文字列配列の先頭アドレスを渡す事で受け取った関数は文字列だとの認識で1バイトを読んでは次のアドレスを読んで0が発見されるまでを処理します。または関数によっては逆にそのエリアに文字列を書き込みして最後に0を入れます。

1

ポインタは、複数の値を出力することがメインではありません。 ポインタという手法を使うことで、「メモリを直接、触ることができる」というのが、ポインタの意味というか、存在理由だと思います。 「存在する機能は、必ず使わなくてはいけない」というわけではないので、要件として、メモリを直接操作するような必要がなければ、ムリして、ポインタを使う必要はありません。 ポインタは、メモリに直結しますので、間違うと、コアダンプ等の事象にも繋がります。

1人がナイス!しています

0

>c言語のポインタ このようなメリットがあります つまり、変数のポインタの他、関数のポインタもあります コールバック(call back)関数の必要性 , C言語 - 組み込み技術を向上したい!! http://sunnydays-k.hatenablog.com/entry/2015/09/16/061128 ポインタ虎の巻~関数ポインタの使い方 http://www.nurs.or.jp/~sug/soft/tora/tora13.htm C言語ワンポイント講座:ポインタと派生型徹底入門 第3章 http://www.officeuchida.com/pdt/pdtsamp3.html 関数の引数として関数ポインタを渡す | blog.PanicBlanket.com https://blog.panicblanket.com/archives/2920 【C言語】関数ポインタを利用して呼び出す関数を動的に変更する https://www.kishiro.com/programming/c/function_pointer.html