C++把"cout << 字符型指针"这种输出格式安排给输出字符串了,就是说它被编译器解释为从指针开始一个接一个地输出内存单元里的字符,直到遇到’\0’时为止。要想输出地址你强制成别的类型就可以了:如cout << (void *)&c << endl;就可以!
#include <iostream>
using namespace std;
int main()
{
char str[] = "ab";
char* p = str;
cout << "p = " << (void*)&str[0] << endl << "*p = " << *p << endl;
p = p + 1;
cout << "(p + 1) = " << (void*)&str[1] << endl << "*(p + 1) = " << *p << endl;
return 0;
}
由此可得,一般情况下,字符占据一个字节,而一个数占的字节数根据数据的类型决定。