如果我输出*name()就是输出字符串的首字母,不过字符串要到/0才会中止,那不久输出一串了吗?
也就是说我认为要输出地址里的值一定要带上前面的*,假设内存分配给name()的地址为2000,那么应该输出2000呀。
到底哪里理解错了呢。雷锋
追答你的理解其实没错。字符串遇到\0结束,但是字符没有这个规则吧。输出name[0]本来是输出地址,如2000,但是C++有对<<重载,当name[0]是字符指针的时候,不输出地址了,输出串的值。具体如下:
1、*name[0]是一个字符型的值,它只是一个字符,不是字符串,不存在你说的遇到\0结束,它永远没有更多的东西。就像 char c='c'; *name[0]=c; cout<<*name[0]; 你可能认为输出串,那么cout<<c; 呢?还会输出串吗?
2、本来输出name[0]会输出一个地址对吧,因为它就是一个指针。但是C++的<<是重载过的,当它右侧是一个指向字符型的指针的时候,会把这个指针当作字符串名处理,输出整个串的值,这个才是遇到\0结束。至于具体怎么搞得,我也不知道。如果你想要输出它2000,也就是它的地址,反而需要别的方法。