我和你一样不会,但是我首先想到可能跟操作符重载有关.
cout << ia
调用ostream& ostream::operator<<(const void * ptr)这个;
cout << ca
调用ostream& ostream::operator<<(const char * s)这个;
其实在这里ia,ca肯定是首地址,但是cout<<调用操作符重载后可以不同的输出。我这里有个例子可以证明:
#include<iostream.h>
int main(){
int ia[3] = {1, 2, 3};
char ca[3] = {'a', 'b', '\0'};
void * p;
p=ia;
cout << p << endl;//调用ostream& ostream::operator<<(const void * ptr)
cout<<ia<< endl;//调用ostream& ostream::operator<<(const void * ptr)
p=ca;
cout <<p << endl;
//输出的是ca首元素地址,调用ostream& ostream::operator<<(const void * ptr)
cout <<ca ;///输出的是ab,调用ostream& ostream::operator<<(const char * s)
int u;
cin>>u;
}