私はポインターを理解するのがちょっと新しいので、ポインターの働きについて正しい考えを持っているかどうかを誰かが確認できることを願っていました。私は、ポインタが何であるかのアイデアを簡素化しようとするとどのように私はfunctAにこのアドレスを送信するとき関数から関数へのポインタの受け渡し
functA(int *numb){
functB(numb);
}
functB(int *numb){
functC(numb);
}
functC(int *numb){
*numb+=1;
}
int main(){
int testNumber = 0;
functA(&testNumber);
.
.
.
}
だからメインに、私はそうFUNCT AにtestNumberのアドレスを送信していますそれらを使用しますよ問題はない、正しい?
funct Aにはアドレスを保持できるポインタパラメータがあるため、アドレスを送信すると問題にはなりません。そして、numb(functA内)はポインタなので、functBはアドレスを受け入れることができるので、functBに送ることができます。また、私はまだtestNumberと同じアドレスを送信していますが、正しいですか?
また、私はfunctCとfunctCに麻痺を送りますが、私はこの位置をデレンプンしています(これを言う良い方法がありますか?)そしてカウントを1だけ増やします。これが完了すると、testNumber 1、正しいはずですか?
私はこれが馬鹿に聞こえるかもしれないと知っていますが、私はこれを概念的に把握しようとしています。私はちょうど私が提出したプロジェクト(これを行ったが、それは長すぎた)でこのダウンコンセプトを取得しようとするよりも多くの時間を費やした
ポインタで 'testNumber'を変更するコードが動作しているようですが、' testNumber'の値は 'functA(&testNumber)'呼び出しの後に1になります。 'その行の最後に – VolAnd
新しいCプログラマにとってポインタは常に難しいです。 *の横にある値は、それがなければアドレスであることを覚えておいてください。別の関数へのポインタを渡して、_address_を渡したい場合は、スターなしで変数名を渡します。受信関数の変数には星が必要です。値を渡すときは逆です(受信関数もポインタにしたくない場合)。これらのルールには例外がありますが、memcpyなどを書き直さない限り、あなたが心配する必要があることは非常に疑問です; – Aurelius
@VolAndああ、ありがとうございます。今すぐ修正する – Woff