C言語でポインタと1次元配列を説明する
ポインタは、別の変数のアドレスを格納する変数です。
機能
ポインタの機能を以下に説明します-
- ポインタはメモリスペースを節約します。
- メモリ位置に直接アクセスできるため、ポインタの実行時間が短縮されます。
- ポインタを使用すると、メモリに効率的にアクセスできます。つまり、メモリは動的に割り当てられ、割り当てが解除されます。
- ポインタはデータ構造で使用されます。
ポインタの宣言、初期化、アクセス
次のステートメントを検討してください-
int qty = 179;
メモリ内では、変数は次のように表すことができます-
ポインタの宣言
これは、以下のステートメントで説明されているように、「p」が別の整数変数のアドレスを保持するポインタ変数であることを意味します-
Int *p;
ポインタの初期化
アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。
例-
int qty = 175; int *p; p= &qty;
ポインタを介して変数にアクセスする
変数の値にアクセスするには、間接演算子(*)を使用します。
例-
ここで、「*」はアドレスでの値として扱うことができます。
2つのステートメントは、次のステートメントと同等です-
p = &qty; n = *p; n =qty
ポインタと1次元配列
- コンパイラは、配列のすべての要素に連続メモリ位置を割り当てます。
- ベースアドレス=配列の最初の要素アドレス(インデックス0)。
- 例-inta[5] ={10、20,30,40,50};
要素
5つの要素は次のように格納されます-
-
「p」が整数ポインタとして宣言されている場合、配列「a」は次の代入で指すことができます-
p = a; (or) p = &a[0];
-
'a'のすべての値は、p++を使用して1つの要素から別の要素に移動することによってアクセスされます。ポインターがインクリメントされると、その値は、ポインターが指すデータ型のサイズだけ増加します。この長さは「スケールファクター」と呼ばれます。
-
「p」と「a」の関係を以下に説明します-
P = &a[0] = 1000 P+1 = &a[1] = 1004 P+2 = &a[2] = 1008 P+3 = &a[3] = 1012 P+4 = &a[4] = 1016>
-
要素のアドレスは、そのインデックスとデータ型のスケール係数を使用して計算されます。これを説明する例をここに示します。
Address of a[3] = base address + (3* scale factor of int) = 1000 + (3*4) = 1000 +12 = 1012
-
配列のインデックスを使用する代わりに、ポインタを使用して配列要素にアクセスできます。
-
*(p + 3)はa[3]の値を示します。
a[i] = *(p+i)
サンプルプログラム
以下は、ポインタと1次元配列のCプログラムです-
#include<stdio.h> main ( ){ int a[5]; int *p,i; printf ("Enter 5 lements"); for (i=0; i<5; i++) scanf ("%d", &a[i]); p = &a[0]; printf ("Elements of the array are"); for (i=0; i<5; i++) printf("%d", *(p+i)); }
出力
上記のプログラムを実行すると、次の結果が得られます-
Enter 5 elements : 10 20 30 40 50 Elements of the array are : 10 20 30 40 50
-
ユニオンにC言語でのポインタを説明する
ユニオンはメモリロケーションと呼ばれ、さまざまなデータ型のいくつかの変数によって共有されます。 構文 構文は次のとおりです- union uniontag{ datatype member 1; datatype member 2; ---- ---- datatype member n; }; たとえば、 union sample{ int a; float b; char c; }
-
C言語でのポインタアクセスの概念を説明する
ポインタは、他の変数のアドレスを格納する変数です。 ポインタの宣言、初期化、アクセス 次のステートメントを検討してください- int qty = 179; ポインタの宣言 int *p; 「p」は、別の整数変数のアドレスを保持するポインタ変数です。 ポインタの初期化 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 int qty = 175; int *p; p= &qty; 文字列の配列内の要素にアクセスする際にポインタがどのように役立つかの例を考えてみましょう。 このプログラムでは、特定の場所に存在する要素にアクセスしようとしています。操