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

Cでのconstint*、const int * const、およびintconst*の違い


ポインタ

Cプログラミング言語では、* pはポインタに格納されている値を表し、pは値のアドレスを表し、ポインタと呼ばれます。

const int * およびintconst * ポインタは定数intを指すことができ、このポインタが指すintの値は変更できないことを示します。ただし、ポインタの値は定数ではなく、別の定数intを指す可能性があるため、変更できます。

const int * const ポインタは定数intを指すことができ、このポインタが指すintの値は変更できないことを示します。また、ポインタの値を変更することもできません。現在は定数であり、別の定数intを指すことはできません。

親指のルールは、構文に右から左に名前を付けることです。

// constant pointer to constant int
const int * const
// pointer to constant int
const int *

例(C)

コメントされた誤ったコードのコメントを外し、エラーを確認します。

#include <stdio.h>
int main() {
   //Example: int const*
   //Note: int const* is same as const int*
   const int p = 5;
   // q is a pointer to const int
   int const* q = &p;
   //Invalid asssignment
   // value of p cannot be changed
   // error: assignment of read-only location '*q'
   //*q = 7;
   const int r = 7;
   //q can point to another const int
   q = &r;
   printf("%d", *q);
   //Example: int const* const
   int const* const s = &p;
   // Invalid asssignment
   // value of s cannot be changed
   // error: assignment of read-only location '*s'
   // *s = 7;
   // Invalid asssignment
   // s cannot be changed
   // error: assignment of read-only variable 's'
   // s = &r;
   return 0;
}

出力

7

  1. const int *、const int * const、およびint const *の違いは何ですか?

    ここでは、整数ポインター、整数定数、および整数定数ポインターに基づくいくつかの異なるタイプの変数宣言を確認します。 それらを決定するために、時計回り/スパイラルルールを使用します。用語を話し合うことで、ルールも理解できます。 const int * 。これは、これがポインター型変数であることをコンパイラーに通知するために使用され、定数intのアドレスを格納できます。時計のルールはこのように言っています- もう1つはconstint*constです。これは、これが1つの定数ポインター変数であり、別の定数整数のアドレスを格納できることを示すために使用されます。時計のルールを適用する

  2. GoとJavaの違い。

    行く Goは手続き型プログラミング言語です。プログラムはパッケージを使用して組み立てられます。動的言語に似たパターンを採用する環境をサポートします。 Java Javaはオブジェクト指向プログラミング言語です。 Javaは静かで高速、信頼性が高く、安全です。最も広く使用されている言語でもあります。 GoとJavaの重要な違いは次のとおりです。 Sr。いいえ。 キー 移動 Java 1 タイプ Goは手続き型プログラミング言語であり、動的言語と同様のパターンをサポートしています。 Javaはオブジェクト指向プログラミング言語です。 2 クラスのサポート