この記事では、私のオリジナルである正しくない場合は、定義および使用方法のポインタぼやけた学生のための新入ピットC言語に適した、と指摘してください。
基本的に、ポインタ変数は、変数ですが、 int型はなりint型* ように、と。しかし、ポインタ変数の内容は、メモリアドレス空間における通常の変数の内側に配置されている(奇妙16 に興味進アドレス形式、自己百度)
ポインタ変数のフォーマット定義: int型/ダブル/...* studentp。
それはポインタ変数の割り当てを与えるために時間にする必要がありますので: studentp =&学生。
それでは、どのポインタを介して取得する学生の値は簡単になります変数= * studentp; ポインタ変数と定義してそこに混同してはなりません!!!
通常の関数ポインタとポインタ事実として、関数ポインタ変数へのより多くの関数の名前よりも何も、関数ポインタ変数ポイント、変数、ポインタの前にいた時間と取得する * 番号を
そして、誰かが尋ねた、私はコードが以前にまだ実行ポインタ変数、余計なものであるポインタ変数を使用していなかった書きましたか?
それは避けられないが、古典的な質問:スワップ為替-定義したい場合は、スワップ機能を、達成するためにどのように、二つの変数の値を交換しますか?
一部の人々は、ライン上の次のコードは、ポインタを使用していなかったと言います!
1の#include <stdio.hの> 2 3。 ボイドスワップ(int型 A、INT B) 4 INTメイン(ボイド){ 5。 のprintf(" 少しレモン開始\ N-!" ) 。6 。7 INT A = 5、B = 。6 、 図8 スワップ(A、B) 。9 のprintf(" マスター内部関数D(%)= A、D B =%\ N- " 、A、B); 10 リターン 0 ; 11 } 12は、 ボイドスワップ(int型 A、INTB){ 13 のint TMP。 14 TMP = A。 15 A = B。 16 B = TMP。 17 のprintf(" スワップ函数内部A =%D、B =%D \ n " 、B)。 18 }
出力:
回答: C 、言語プログラミングプロセス指向プログラミング、プロセス指向分析は、問題を解決するために必要なステップであるが、これらの手順を実装するための関数を使用し、一歩一歩、それをオンにするための呼び出しで使用されます。私は内部の主な機能を引き続き使用する必要がある場合は、ABの完了交換価値、機能は非常に失敗したことを書くこと、およびCの言語の戻り一つの値だけ、あなたは結果を得るために、復帰動作を使用することはできません。
一つは、なぜ私は頼むかもしれ交換はっきりさせたAB型で、その結果、交換をメインその中の機能を使用していませんでしたか?
:これは、動作メカニズムの原理を含み、各機能は、排他的なメモリ空間、あるスワップ領域AB とメインスペースAB 明確ではないため、同じAB、どんなにのように、スワップイライラが影響を与えることはできませんどのようにメイン内部の事を。
あなたはポインタ変数を使用する場合、結果は異なります。
今すぐコードポインタ変数に変更します。
1の#include <stdio.hの> 2 3。 ボイドスワップ(INT * A、INT * B) 。4 INTメイン(ボイド){ 5 のprintf(" 少しレモン開始\ N-!" ) 。6 。7 INT A = 5、 B = 6 ; 図8 スワップ(&A&B)、 図9 のprintf(" マスター内部関数A =%のD、B =%D \ N- " 、A、B); 10 リターン 0 ; 11 } 12は、 13である ボイドスワップ(INT*、INT * B){ 14 のint TMP。 15 TMP = * 。 16 * = * B。 17 * B = TMP。 18 のprintf(" スワップ函数内部A =%D、B =%D \ n "、*、* B)。 19 }
出力:
ここでスワップ受信するため、ポインタ変数である2つのパラメータをメイン来る関数A(主に)とB(メイン)アドレス、スワップポインタ変数A(スワップ)とB(スワップ)に寄託A(メイン)及びB(メイン)アドレス、その結果によって* と* Bはダイレクトモード変更メイン培地(メイン)及びB(メイン)値。
これは、ポインタを使用しての利点です。