Cのポインタは簡単で楽しく習得できます。一部のCプログラミングタスクはポインタを使用するとより簡単に実行でき、動的メモリ割り当てなどの他のタスクはポインタを使用しないと実行できません。したがって、完璧なCプログラマーになるには、ポインターを学ぶ必要があります。簡単で簡単な手順でそれらの学習を始めましょう。
ご存知のように、すべての変数はメモリの場所であり、すべてのメモリの場所には、アンパサンドを使用してアクセスできるアドレスが定義されています(&)演算子。メモリ内のアドレスを示します。定義された変数のアドレスを出力する次の例を検討してください-
上記のコードをコンパイルして実行すると、次のようになります。結果-
Address of var1 variable: bff5a400Address of var2 variable: bff5a3f6
ポインタとは
ポインタは、値が別の変数のアドレス、つまり直接アドレスである変数です。他の変数や定数と同様に、変数アドレスを格納するために使用する前に、ポインタを宣言する必要があります。ポインタ変数宣言の一般的な形式は、-
type *var-name;
ここで、typeはポインタの基本型です。有効なCデータ型である必要があり、var-nameはポインター変数の名前です。ポインタを宣言するために使用されるアスタリスク*は、乗算に使用されるアスタリスクと同じです。ただし、このステートメントでは、変数をポインターとして指定するためにアスタリスクが使用されています。有効なポインタ宣言のいくつかを見てください-
int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */char *ch /* pointer to a character */
整数、浮動小数点、文字など、すべてのポインタの値の実際のデータ型、は同じで、メモリアドレスを表す長い16進数です。異なるデータ型のポインター間の唯一の違いは、ポインターが指す変数または定数のデータ型です。
ポインターの使用方法?
いくつかの重要な操作があります。これは、ポインタを使用して非常に頻繁に行います。 (a)ポインター変数を定義し、(b)変数のアドレスをポインターに割り当て、(c)最後にポインター変数で使用可能なアドレスの値にアクセスします。これは、オペランドで指定されたアドレスにある変数の値を返す単項演算子*を使用して行われます。次の例では、これらの操作を使用しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable: 20
NULLポインタ
割り当てる正確なアドレスがない場合に備えて、ポインタ変数にNULL値を割り当てることをお勧めします。これは、変数宣言時に行われます。 NULLが割り当てられたポインタは、nullポインタと呼ばれます。
NULLポインタは、いくつかの標準ライブラリで定義されている値がゼロの定数です。次のプログラムについて考えてみます-
#include <stdio.h>int main () { int *ptr = NULL; printf("The value of ptr is : %x\n", ptr ); return 0;}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
The value of ptr is 0
ほとんどのオペレーティングシステムでは、アドレス0のメモリはオペレーティングシステムによって予約されているため、プログラムはそのメモリにアクセスできません。ただし、メモリアドレス0には特別な意味があります。これは、ポインタがアクセス可能なメモリ位置を指すことを意図していないことを示します。ただし、慣例により、ポインタにnull(ゼロ)値が含まれている場合は、何も指していないと見なされます。
nullポインタを確認するには、次のように「if」ステートメントを使用できます-
if(ptr) /* succeeds if p is not null */if(!ptr) /* succeeds if p is null */
ポインターの詳細
ポインターには多くの簡単な概念があり、Cプログラミングにとって非常に重要です。次の重要なポインタの概念は、すべてのCプログラマーにとって明確である必要があります-
Sr.No。 | コンセプト&説明 |
---|---|
1 | ポインタ演算
ポインタで使用できる演算演算子は、++、-、+、- |
2 | |
3 | ポインタへのポインタ
Cを使用すると、ポインタなどにポインタを置くことができます。 |
4 | Cの関数にポインタを渡す
Passing参照またはアドレスによる引数を使用すると、渡された引数を、呼び出された関数によって呼び出し元の関数で変更できます。 |
5 | 戻り値C
Cの関数からのポインタを使用すると、関数はローカル変数、静的変数、および動的に割り当てられたメモリへのポインタを返すことができます。 |