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

Cでのconstchar* p、char * const p、およびconst char *constpの違い


ポインタ

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

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

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

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

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

// constant pointer to constant char
const char * const
// constant pointer to char
char * const
// pointer to constant char
const char *

例(C)

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

#include <stdio.h>
int main() {
   //Example: char const*
   //Note: char const* is same as const char*
   const char p = 'A';
   // q is a pointer to const char
   char const* q = &p;
   //Invalid asssignment
   // value of p cannot be changed
   // error: assignment of read-only location '*q'
   //*q = 'B';
   const char r = 'C';
   //q can point to another const char
   q = &r;
   printf("%c\n", *q);
   //Example: char* const
   char u = 'D';
   char * const t = &u;
   //You can change the value
   *t = 'E';
   printf("%c", *t);
   // Invalid asssignment
   // t cannot be changed
   // error: assignment of read-only variable 't'
   //t = &r;
   //Example: char const* const
   char const* const s = &p;
   // Invalid asssignment
   // value of s cannot be changed
   // error: assignment of read-only location '*s'
   // *s = 'D';
   // Invalid asssignment
   // s cannot be changed
   // error: assignment of read-only variable 's'
   // s = &r;
   return 0;
}

出力

C
E

  1. C#と.Netの違い

    C#はプログラミング言語であり、.NETはフレームワークです。 .NETには、.NETFrameworkの仮想コンポーネントである共通言語ランタイム(CLR)があります。 .NETにはC#があるだけでなく、それを介してVB、F#などを操作できます。 C#は.NETの一部であり、次の機能があります- ブール条件 自動ガベージコレクション 標準ライブラリ アセンブリのバージョン管理 プロパティとイベント デリゲートとイベント管理 使いやすいジェネリック インデクサー 条件付きコンパイル シンプルなマルチスレッド LINQおよびLambda式 Windowsとの統合

  2. GoとJavaの違い。

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