3

何を*(uint16_t *)"200"返しますか?私が理解している"200"ことから、文字配列へのポインターを参照するため、ポインターは文字を参照し、'2'ASCII 文字を介して整数に変換されますが、最終的な文字が何をするのかわかりません*

4

1 に答える 1

3

複雑な式を分割します。

char const* a = "200";
uint16_t*   b = (uint16_t*)a;
uint16_t    c = *b;

a文字列リテラル ( ) の最初の文字へのポインタ'2'です。

キャストを介して取得する場合、「ポイント先のデータが実際には a (またはその配列) であるbふりをする」と言います。uint16_t

取得するために逆参照bすると、「アドレスcの」が取得されます。uint16_tb

そのため、文字列リテラル ( "20")の最初の 2 文字 (2 バイト、16 ビット) を として再解釈していuint16_tます。

于 2013-10-24T02:24:18.673 に答える