2

私は当初思っていたよりも C++ に詳しくないようです。C/C++ に関する私の知識に関する限り、これは機能するはずです。文字配列を定義してから、ポインターを先頭に割り当てようとしています...何が間違っていますか?

// Create character array
char str[] = "t xtd 02 1CF00400 08 11 22 33 44 55 66 77 88 0   0 1234.567890";
// Assign pointer to beginning of array
char* p = &str;
4

3 に答える 3

10

の型はstrですchar[63]。参考までに、文字列リテラル自体の型はconst char[63]ではなくであることに注意してくださいconst char *char[63]そのアドレスを取得すると、 、またはへのポインタが得られますchar (*)[63]。次に、それを に割り当てようとしchar *ます。

あなたがすべきことは、アドレスを取得せず、配列をポインターに減衰させることです。

char *p = str;

ただし、実際にすべきことは usestd::stringです。

于 2012-11-04T16:38:32.833 に答える
5

アドレス演算子を単純に省略できます。

char *p = str;

機能すると、配列はそのコンテキストの最初の要素へのポインターに自動的に崩壊します。または、必要に応じて明示的にキャストしますが、それは忌まわしいものです。

于 2012-11-04T16:37:58.900 に答える
1
 char* p = str;

アンパサンドは冗長です。単純な配列名は、その先頭のアドレスを示しているだけです。

于 2012-11-04T16:40:36.413 に答える