Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。210件1教えていただけると幸いです。&が無くても良いではないかという趣旨でしょうか、それとも&自体の意味が分からないという趣旨でしょうか。どこまで分かっていて、どこが分からないのかを質問文に書いてくださると回答しやすいです。票1おそらくこんなことでしょうか。関連するこれらの記事を参照してみてください。ポイントを抜粋します。アドレスの参照C言語では、変数に値を保存することができます。整数型(int型)の変数ならば整数を保存することができるし、文字型(char)型の変数なら文字を保存することができますこれらの変数ですが、計算機の中では、当然、メモリ上に保存されます。メモリ上のどこに保存されるのかは、OSやコンパイラが、適時行ってくれます。値渡しアドレス渡しの2通りがあります。ここでは、その内容と違いについて説明します。アドレス渡し関数の引数として、(変数の)アドレスを渡す方法です。関数に渡されるのは、『変数のアドレス』です。関数内部では、自分で使用する変数のアドレスを、引数として渡されたアドレスに設定します。関数内部と外部で名前は異なる変数かもしれませんが、保存する場所は一緒になります。*ptX)の関数は、パラメータにint型変数へのポインタ(アドレス)を渡す必要があります。3;と定義されていて、int型変数そのものであり、ポインタ(アドレス)ではありません。そこで変数aのアドレス値を表すためにaの前に&を付けて、(&a)としているわけです。ここで、&を付けずにfuncDouble(a);としてコーディングすると、パラメータの型が関数宣言と違うということでコンパイル時に(オプション指定によりますが)警告またはエラーになるはずです。violationとかのエラー/例外になったりします。aがint型変数ではなくint型変数へのポインタ変数であれば、&を付けずに指定できます。(むしろ付けると問題になる)以下のような感じですね。|1直接の回答ではないのですが、C言語のポインタは表記の問題で混乱する人が多いと思います。解説を引用しておきます。*の記号は、実に3通りの意味を持っており、混乱の原因になります。(略)2つ目は、間接参照演算子です。ポインタ変数を通常変数モードにします。ようにして使用します。乗算演算子と同じ記号を使っていても区別が付きます。3つ目は、ポインタ変数を宣言する時に使用する記号です。ようにして使用します。宣言の時に使用する*の記号は、何の関係もない全く別の記号です。同じ文字を使っているだけのことに過ぎません。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。