cout 是ostream 类型,<<是他的重载运算符,
它重载了许多<<,看它的源码,你会看到类似于以下。
basic_ostream& __CLR_OR_THIS_CALL operator<<(const void* _Val) { // insert a void pointer
basic_ostream& __CLR_OR_THIS_CALL operator<<(double _Val) { // insert a double
其中对void* 是直接输出地址,对于char* 则直接输出字符串 类型
因为much是char类型,&much是char *类型,cout输出时会将&much认为是字符串进行输出的。由于这个地址指向的内容没有可见内容,所以啥也没输出
而void * ,int * 这类指针,cout是将他们当做整型来看待的,所以输出了指针自身的地址。而much变量可能编译器默认为0了,所以输出的是0