int a[] = { 1,2,3 };
char str[] = "hello", str1[] = "world";
std::cout << a << std::endl;
std::cout << str << std::endl;
输出:
在上面的代码中,整型数组a[]和字符数组str[],执行std::cout << a << std::endl; std::cout << str << std::endl; 后, 整型数组输出了数组首地址,字符数组输出了数组内容,
我们知道数组名是指向数组首元素的指针, 所以按理说两个都应该输出数组地址才对,但是字符数组却输出了数组的内容,why???
因为:
当你输出一个指针时,它会根据指针的类型来决定如何输出。对于字符指针(即指向字符的指针),会将其视为以null字符结尾的字符串,并输出字符串的内容。而对于其他类型的指针,会将其视为一个内存地址,并输出该地址的值(通常以十六进制表示)