2017-02-22 8 views
0

ostreamで使用されるconst char *に整数参照値をキャストすることが時々起こるいくつかのコードを読んでいます。整数参照値を(const char *)にキャストする効果はありますが、C++ではキャストとchar *とconst char *へのキャストの違いは何ですか?

uint32_t val;// initialized by some value 
void a(ostream& os) const{ 
    os.write((const char*)&val, sizeof(val)); 
} 

1)(const char *)に整数参照型をキャストするとどういう影響がありますか?

2)(char *)& val(const char *)を使用するのと同じですか?

2 *)そうでない場合、違いは何ですか?

+0

単純な部分に分解しましょう。 1. 'const char *'と 'char *'の違いは何ですか? 2.キャスティングは何をしますか? 1つの質問(またはその両方)を選択して尋ねます。 –

+0

'&val'は整数へのポインタです。整数参照ではありません。 –

答えて

1

char *およびconst char *は異なるタイプです。 char *はcharへのポインタであり、const char *はポインタを介して変更できないcharへのポインタです。

あなたの例では、(const char*)&valvalのアドレスを取り、このデータを変更できないcharへのポインタとして扱います。 write関数はデータを変更しない(しかし単に他の場所に書き込む)ことを保証します。パラメータとして(char*)&valを渡しても、これは保証されません。 writevalを上書きする可能性があります。

+0

ありがとう@Martin。しかし、私はこれが私が知りたいものではないことを認識しています。私はタイトルを編集し、より多くの質問を明確にしました。 – mallea

関連する問題