何を*(uint16_t *)"200"
返しますか?私が理解している"200"
ことから、文字配列へのポインターを参照するため、ポインターは文字を参照し、'2'
ASCII 文字を介して整数に変換されますが、最終的な文字が何をするのかわかりません*
。
質問する
68 次
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_t
b
そのため、文字列リテラル ( "20"
)の最初の 2 文字 (2 バイト、16 ビット) を として再解釈していuint16_t
ます。
于 2013-10-24T02:24:18.673 に答える