在this page "Pointers and string literals" section网站上说const char * foo = "hello";
,当我们输出foo时,它会返回字符串文字的地址,我在家里尝试了这个,但我得到了"hello"
,当我做*foo
我也得到"hello"
时,我的问题是网站错了吗?
答案 0 :(得分:1)
以下代码解释了一切。
const char *foo = "hello";
cout << static_cast<const void *>(foo) << endl; //result is address of "hello"
cout << foo << endl; //result is "hello"
cout << *foo << endl; // result is 'h'
cout << static_cast<const void *>(foo)
调用以下函数。
_Myt& __CLR_OR_THIS_CALL operator<<(const void *_Val)
cout << foo
调用以下函数。
template<class _Traits> inline
basic_ostream<char, _Traits>& operator<<(
basic_ostream<char, _Traits>& _Ostr,
const char *_Val)
cout << *foo
调用以下函数。
template<class _Traits> inline
basic_ostream<char, _Traits>& operator<<(
basic_ostream<char, _Traits>& _Ostr, char _Ch)
注意上述被调用函数的最后一个参数 以下快照来自http://www.cplusplus.com/doc/tutorial/pointers/。内容是正确的,没有错。