代码:
const char var = 'a';
auto static_var = static_cast<char>(var);
auto const_var = const_cast<char*>(&var);
cout << "var: \t\t" << var << "\taddress:\t" << reinterpret_cast<long>(&var) << endl;
cout << "static_var: \t" << static_var << "\taddress:\t" << reinterpret_cast<long>(&static_var) << endl;
*const_var = 'b';
cout << "const_var: \t" << *const_var << "\tptr:\t\t" << reinterpret_cast<long>(const_var) << endl;
cout << "var(direct): \t" << var << "\taddress:\t" << reinterpret_cast<long>(&var) << endl;
cout << "var(ptr): \t" << *(&var) << "\taddress:\t" << reinterpret_cast<long>(&var) << endl;
输出:
var: a address: 6122386111
static_var: a address: 6122386110
const_var: b ptr: 6122386111
var(direct): a address: 6122386111
var(ptr): b address: 6122386111
平台:
- macbook pro 13 M1
- macOS 11.6
- Xcode 13.0
- Clang 13.0
请教大家一下, 为何最后两种输出的结果不一样, 这是什么原因导致的