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

C++での++*p、* p ++、*++pの違い


このセクションでは、C++の*ptr ++、* ++ ptr、および++*ptrの違いを確認します。

ここでは、CまたはC++でのpostfix++とprefix++の優先順位を確認します。接頭辞++または--の優先順位は、間接参照演算子「*」よりも優先され、接尾辞++または-は、接頭辞++および間接参照演算子「*」の両方よりも優先されます。

ptrがポインタの場合、* ptr ++は*(ptr ++)を示し、++ * prtは++(* ptr)

を示します。

サンプルコード

#include<iostream>
using namespace std;
int main() {
   char arr[] = "Hello World";
   char *ptr = arr;
   ++*ptr;
   cout << *ptr;
   return 0;
}

出力

I

したがって、ここで最初にptrは「H」を指しています。 ++ * ptrを使用すると、Hが1増加し、値は「I」になります。

サンプルコード(C ++)

#include<iostream>
using namespace std;
int main() {
   char arr[] = "Hello World";
   char *ptr = arr;
   *ptr++;
   cout << *ptr;
   return 0;
}

出力

e

したがって、ここで最初にptrは「H」を指しています。 * ptr ++を使用するとポインタが増えるため、ptrは次の要素を指します。したがって、結果は「e」になります。

サンプルコード(C ++)

#include<iostream>
using namespace std;
int main() {
   char arr[] = "Hello World";
   char *ptr = arr;
   *++ptr;
   cout << *ptr;
   return 0;
}

出力

e

この例でも、++を使用してptrを増やしています。ここでは、pre-increment ++の優先順位が高く、最初にポインターを増やし、次に*を使用して値を取得します。つまり、「e」を印刷しています。


  1. C++の「struct」と「typedefstruct」の違いは?

    C ++では、structとtypedef structの間に違いはありません。これは、C ++では、すべてのstruct / union / enum/class宣言が暗黙的にtypedefであるかのように動作するためです。 ed、同じ名前の別の宣言によって名前が隠されていない限り。 typedefを前方宣言できないという微妙な違いが1つありますが、したがって、typedefオプションの場合、どこでも使用する前に、typedefを含むファイルを含める必要があります。

  2. C++文字列定数と文字定数の違い

    C ++では、一重引用符で囲まれた文字は文字リテラルです。文字型です。たとえば、「a」は、ASCIIベースのシステムでは値97のchar型です。 二重引用符で囲まれた1文字または文字列は、文字列リテラルを表します。これはconstchar[]型であり、文字列の長さ+1のサイズの配列を参照します。その余分な文字は文字列の終わりを示すためにあります。 文字列リテラルは、「abcdefg」のように任意の長さにすることができます。文字リテラルには、ほとんどの場合、1文字だけが含まれます。これらが印刷されるとき、文字列リテラルは、文字列で最初の\0またはNULL文字が検出されるまで印刷されます。