Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でのポインターへのポインターとvoidポインターの概念を説明しますか?


ダブルポインタまたはポインタへのポインタは、別のポインタのアドレスを保持する変数です。

以下は、ポインタへのポインタの宣言です-

datatype ** pointer_name;

たとえば、int ** p; pはポインタへのポインタです

初期化 −「&」は初期化に使用されます。

たとえば、

int a = 10;
int *p;
int **q;
p = &a;

アクセス −アクセスには間接演算子(*)が使用されます。

以下は、ポインタへのポインタのCプログラムです-

#include<stdio.h>
main ( ){
   int A = 10;
   int *p;
   int **q;
   p = &A;
   q = &p;
   printf("A =%d",A);
   printf("A value of pointer = %d", *p);
   printf("A value of double pointer = %d", **q);
}

出力

上記のプログラムを実行すると、次の結果が得られます-

A=10
A value of pointer = 10
A value of double pointer = 10

ボイドポインタ

これは、任意のデータ型変数のアドレスを保持できる(または)任意のデータ型変数を指すことができるポインタの一種です。

以下は、voidポインタの宣言です-

void *pointername;

たとえば、void * vp;

アクセス −型キャスト演算子は、ポインターを介して変数の値にアクセスするためのものです。

構文は次のとおりです-

* ( (type cast) void pointer)

たとえば、

int i=10;
void *vp;
vp = &i;
printf ("%d", * ((int*) vp));
type cast

以下は、voidポインタのCプログラムです-

#include<stdio.h>
main ( ){
   int i =10;
   float f = 5.34;
   void *vp;
   clrscr ( );
   vp = &i;
   printf ("i = %d", * ((int*)vp));
   vp = &f;
   printf ( "f = %f", * ((float*) vp));
   getch ( );
}

出力

上記のプログラムを実行すると、次の結果が得られます-

i = 10
f = 5.34

  1. ユニオンにC言語でのポインタを説明する

    ユニオンはメモリロケーションと呼ばれ、さまざまなデータ型のいくつかの変数によって共有されます。 構文 構文は次のとおりです- union uniontag{    datatype member 1;    datatype member 2;    ----    ----    datatype member n; }; たとえば、 union sample{    int a;    float b;    char c; }

  2. C言語でのポインタアクセスの概念を説明する

    ポインタは、他の変数のアドレスを格納する変数です。 ポインタの宣言、初期化、アクセス 次のステートメントを検討してください- int qty = 179; ポインタの宣言 int *p; 「p」は、別の整数変数のアドレスを保持するポインタ変数です。 ポインタの初期化 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 int qty = 175; int *p; p= &qty; 文字列の配列内の要素にアクセスする際にポインタがどのように役立つかの例を考えてみましょう。 このプログラムでは、特定の場所に存在する要素にアクセスしようとしています。操