【发布时间】:2025-12-24 00:05:12
【问题描述】:
最近,我看了一个视频,上面说当我定义了一个整数数组时
int my_array[] = {1,2,3};
然后我打印了 my_array cout << my_array; 然后我会得到内存中第一个整数的地址,但是当我们定义一个像
char my_string[] = "Hello";
然后,当我尝试打印 my_string cout << my_string 时,它会返回 Hello,类似地在我们定义指向字符的指针时带有指针
char mystring[] = "HELLO";
char *my = mystring;
cout << my << endl;//HELLO
我们尝试打印指针变量它返回的字符串。
现在我读到了这个article,我读到这个字符串带走了他的内存地址。但我仍然不明白为什么它们不一样,为什么字符数组打印字符串文字,而 int 数组打印第一个的地址。
提前致谢。
【问题讨论】:
-
char *my = mystring;->char *my = my_string;?why an array of chars returns the string literal你的意思是cout << mystring它打印字符串? -
抱歉改错了
-
它们都返回第一个的地址。这就是字符串在 C 中的表示方式:作为指向以 '\0' 字符结尾的字符序列的指针。 (至少转换为指针时;int[] 将分解为 int* 但最初不同。)
-
@UlrichEckhardt 抱歉,写错了,请看我的编辑
标签: c++ arrays pointers operator-overloading implicit-conversion