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

C言語のVoidポインタでNULLポインタを区別する


NullポインターとVoidポインターの違いは、Nullポインターは値であり、Voidポインターは型であるということです。

NULLポインタ

nullポインターは、何も指していないことを意味します。ポインタに割り当てられているアドレスがない場合は、nullに設定します。

ポインタ型、つまりint *、char*にはそれぞれnullポインタ値があります。

構文は次のとおりです-

<data type> *<variable name> = NULL;

たとえば、

int *p = NULL;
char *p = '\0';

サンプルプログラム

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

#include<stdio.h>
int main(){
   printf("TutorialPoint C Programming");
   int *p = NULL; // ptr is a NULL pointer
   printf("\n The value of pointer is: %x ", p);
   return 0;
}

出力

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

TutorialPoint C Programming
The value of pointer is: 0

ボイドポインタ

voidポインターは、データ型を持たないポインターに他なりません。汎用ポインタとも呼ばれます。あらゆるデータタイプのアドレスを保持できます。

構文は次のとおりです-

void *<data type>;

たとえば、

void *p;
int a; char c;

p =&a; //整数のアドレスが割り当てられると、pは整数ポインタに変わります

p =&c; //文字のアドレスが割り当てられると、pは文字ポインタに変わります

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

#include<stdio.h>
int main(){
   int a = 10;
   void *ptr = &a;
   printf("%d", *(int *)ptr);
   return 0;
}

出力

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

10

  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; 文字列の配列内の要素にアクセスする際にポインタがどのように役立つかの例を考えてみましょう。 このプログラムでは、特定の場所に存在する要素にアクセスしようとしています。操