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」を印刷しています。
-
C++の「struct」と「typedefstruct」の違いは?
C ++では、structとtypedef structの間に違いはありません。これは、C ++では、すべてのstruct / union / enum/class宣言が暗黙的にtypedefであるかのように動作するためです。 ed、同じ名前の別の宣言によって名前が隠されていない限り。 typedefを前方宣言できないという微妙な違いが1つありますが、したがって、typedefオプションの場合、どこでも使用する前に、typedefを含むファイルを含める必要があります。
-
C++文字列定数と文字定数の違い
C ++では、一重引用符で囲まれた文字は文字リテラルです。文字型です。たとえば、「a」は、ASCIIベースのシステムでは値97のchar型です。 二重引用符で囲まれた1文字または文字列は、文字列リテラルを表します。これはconstchar[]型であり、文字列の長さ+1のサイズの配列を参照します。その余分な文字は文字列の終わりを示すためにあります。 文字列リテラルは、「abcdefg」のように任意の長さにすることができます。文字リテラルには、ほとんどの場合、1文字だけが含まれます。これらが印刷されるとき、文字列リテラルは、文字列で最初の\0またはNULL文字が検出されるまで印刷されます。