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