I前に長い時間がこの事ポインタを聞いて、噂は彼の名前を聞いて、その型がない、理解することは非常に困難です。しかし、特別な場所を持っていないようです。
- ポインタ
ポインタ変数のアドレスを格納する変数です。
したがって、我々は知ることができ、ポインタは変数のアドレスに格納されており、専用メモリ内のオブジェクトに適用することができ、ポインタ自体は変数です。ポインタ変数のアドレスを格納することができないだけでなく、それは関数ポインタの別の一例であってよいです。
C言語のプログラムが実行されている、メモリはこれらの部分に分かれています
- ---読み出し専用の記憶領域を、プログラム自体と、一定のマシンコードを格納します
- 静的な記憶領域----グローバル変数と静的変数
- 動的なメモリヒープとスタック----
関係ポインタのような、素晴らしいではないと言います。
- ポインタの宣言
ポインタは、キーワードの種類] [変数名]このように定義されています。例:int型*;ポインタの定義は、ポインタと呼ばれる、任意のアドレスは、int型の変数を格納することができます。キーワードのポインタ型は、データを保存するためにメモリのタイプです。
今2高く評価*&単項演算子、&アドレス演算子は、変数のリターンアドレスを働いています。*間接アドレス指定、オペレータが指定したオペランドのアドレスの値を返します。これで私は、Cプログラミング言語の教科書を使用すると、詳細これら二つの演算子をしませんでした。
これら二つの演算子を理解することは、今、私たちは何か、次のコードを実行することができます。
int型 A、C; // 変数A、Cの定義
INT * B; // Bポインタ定義
Aが=を1。 ; // 今1 = A。
B = A&; // 点AにB
C * = B; // Cは現在に等しいです。 1
* B = 5 ; // Aは現在等しい5。
B&C =; // Bは現在C指す
* B = 0 ; // 0 C今に等しいです。
する#include <stdio.hに>
する#include <STDLIB.H>
メイン()
{
int型 * P = NULL、Q = 1 。
P =&Q。
printf(" 住所:%P \ N "、&Q)。
printf(" 住所:%D \ N " 、Q);
printf(" 住所:%P \ N " 、p)は、
printf(" 住所:%D \ N " 、p)は、
printf(" 住所:%P \ N "、* P);
printf(" 住所:%D \ N "、
}
結果は以下の通りである:
住所:0060FEF8
住所:1
住所:0060FEF8
住所:6356728
住所:00000001
住所:1
ダイレクト・メモリ操作用のポインタので、そのため、各ポインタは、どのようなアクションを指し示す場所を知っています。NULLポインタはポインタが任意の場所を指していないときに、あなたは標準ライブラリがNULLで初期化提供使用する必要がある、危険です。
私は、ボイドのprintf変数へのポインタが、コンパイラのエラーを使用したいとポインタは、無効と宣言することができます。オンラインでは、ポインタのvoid型は、あなたが疲れた心を指定していない任意のアドレスを指すことができ、私はテストをすることができcoudblocks言ったが、出力誤差、ポインタの指定されたタイプと、この無効にし、別のポインタならば、あなたはエラーを出力することはできません。私はこの空のために失わ少しだけど、私は読むことができません。
長い時間を探して、変換のこのタイプは、私が最初にそれを書くか、何を書かれていません、少し無知でした。