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

CとC++でNULLポインターの定義が異なるのはなぜですか?


C ++では、nullポインタは次のように定義できます。nullポインタ定数は、-

のように値が0の整数定数式です。

int * p =0;

ただし、cでは、nullポインタは次のように定義できます。nullポインタ定数は、値が0の整数定数式、または-

のようにvoid*にキャストされる式です。

Int * p =0;;

または

int * p =(void *)0;

C ++ 11では、キーワード「nullptr」がnullpointerを表すために使用されます。

int * ptr =nullptr;

Cの場合

#include <stdio.h>
int main() {
   int *p= NULL; //initialize the pointer as null.
   printf("The value of pointer is %u",p);
   return 0;
}

出力

The value of pointer is 0.

C++の場合

#include <iostream>
using namespace std;
int main() {
   int *p= NULL; //initialize the pointer as null.
   cout<<"The value of pointer is ";
   cout<<p;
   return 0;
}

出力

The value of pointer is 0.

  1. 異なるポインター操作とC言語のポインターの問題は何ですか?

    ポインタは、値が別の変数のアドレス、つまりメモリ位置の直接アドレスである変数です。他の変数や定数と同様に、変数アドレスを格納するために使用する前に、ポインターを宣言する必要があります。 次のステートメントを検討してください- int qty = 179; メモリ内の変数の表現は次のとおりです- 次のようにポインタを宣言できます- Int *p; これは、「p」が別の整数変数のアドレスを保持するポインタ変数であることを意味します。 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 例- int qty = 175; int *p; p= &qty;

  2. C#のポインターとは何ですか?

    ポインタは、値が別の変数のアドレス、つまりメモリ位置の直接アドレスである変数です。 ポインタの構文は-です。 type *var-name; ポインタ型を宣言する方法は次のとおりです- double *z; /* pointer to a double */ C#では、安全でない修飾子でマークされている場合、コードブロックの関数でポインター変数を使用できます。安全でないコードまたは管理されていないコードは、ポインター変数を使用するコードブロックです。 以下は、ポインター変数を宣言して使用する方法を示すモジュールです。ここでは安全でない修飾子を使用しました- static unsafe