ポインターの使用を作成、初期化、および実証する C プログラムを作成します。 C プログラミングでポインター変数を使用して値とアドレスにアクセスする方法。
必要な知識
基本的な C プログラミング、ポインター
ポインタの基本
C は高レベルのプログラミング言語であるため、低レベルのプログラミングでは非常に強力です。
ポインターは、そのような低レベルのメモリ処理を提供するツールの 1 つです。メモリ内のデータは、一連のバイトとして編成されます。各バイトは、一意のアドレスを介してアクセスされます。これらのアドレスの範囲は、ゼロ (0) から正の整数までです。 C プログラミングのポインターは、低レベルのメモリ アクティビティを処理する効率的な方法を提供します。
他の変数と同様に、ポインタでもポインタ型の変数を宣言できます。さて、それはどういう意味ですか?他の変数と同様に、ポインター変数を宣言できます。しかし、ポインタ変数にはどのようなデータ型が含まれているのでしょうか?他の変数とは異なり、ポインターは他の変数のメモリアドレスを保持します。これらのメモリ アドレスの使用方法と、ポインターが C プログラマーにとって魔法の杖である方法については後で説明します。いくつかのポインターの概念に慣れましょう。
任意の変数のメモリ アドレスの読み取り
宣言されたすべての変数には、名前、メモリの場所、および値があることがわかっています。 Name は、変数の宣言中に指定する識別子名です。値は、変数に含まれる定数です。
例 - int num =10; num は変数名で、10 はその変数に格納されている値です。しかし、メモリ アドレスはどうでしょうか?
C プログラミングでは、単項 &(Address of) 演算子を使用して、任意の変数のメモリ アドレスを取得します。任意の変数を前に付けた場合の演算子のアドレスは、その変数の実際のメモリ アドレスを返します。変数の実際のメモリ アドレスを取得するプログラムを見てみましょう。
演算子のアドレスを使用してメモリ アドレスを取得するプログラム
/**
* C program to get memory address using address of operator
*/
#include <stdio.h>
int main()
{
/* Simple declarations */
char character = 'C';
int integer = 1;
float real = 10.4f;
long long biginteger = 989898989ll;
/* Print variable value with their memory address */
printf("Value of character = %c, Address of character = %u\n", character, &character);
printf("Value of integer = %d, Address of integer = %u\n", integer, &integer);
printf("Value of real = %f, Address of real = %u\n", real, &real);
printf("Value of biginteger = %lld, Address of biginteger = %u", biginteger, &biginteger);
return 0;
}
注: 上記のプログラムは、異なるシステムでは異なる結果を生成します。また、%u 以外のフォーマット指定子を使用してメモリ アドレスを表示することもできます。整数を出力する任意の書式指定子を使用できます。 %x %d %i %ld などを使用してみてください。
出力
Value of character = C, Address of character = 6356751 Value of integer = 1, Address of integer = 6356744 Value of real = 10.400000, Address of real = 6356740 Value of biginteger = 989898989, Address of biginteger = 6356728
ポインタ変数の作成、初期化、および使用
ポインターは、多くの低レベルのメモリー操作 (動的メモリー割り当てを含む) を処理できます。ただし、ポインターの詳細に入る前に、まずポインター変数を宣言する方法を学びましょう。他の変数宣言と同様に、ポインターも同じ構文に従います -
ポインタ変数を宣言する構文
<data-type> * <variable-name>
ポインタ宣言の例
int * integer_pointer;
float * float_ptr
char * charPtr;
long * lptr;
ポインタ変数を作成、初期化、使用するプログラム
/**
* C program to create, initialize and use pointers
*/
#include <stdio.h>
int main()
{
int num = 10;
int * ptr;
/* Stores the address of num to pointer type */
ptr = #
printf("Address of num = %d\n", &num);
printf("Value of num = %d\n", num);
printf("Address of ptr = %d\n", &ptr);
printf("Value of ptr = %d\n", ptr);
printf("Value pointed by ptr = %d\n", *ptr);
return 0;
}
出力
Address of num = 6356748. Value of num = 10 Address of ptr = 6356744 Value of ptr = 6356748 Value pointed by ptr = 10
楽しいコーディング 😉
おすすめの投稿
- 配列と行列のプログラミング演習
- 文字列プログラミング演習
- 関数と再帰プログラミングの演習