代码:
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
平台:
请教大家一下, 为何最后两种输出的结果不一样, 这是什么原因导致的
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.