c++ - char[] 和 int[] 的区别
问题描述
所以最近,我看了一个视频,它说当我定义一个整数数组时
int my_array[] = {1,2,3};
我打印了 my_arraycout << my_array;
然后我会得到内存中第一个整数的地址,但是当我们定义一个字符数组时
char my_string[] = "Hello";
然后当我尝试打印 my_stringcout << my_string
它返回时Hello
,与我们定义指向字符的指针时的指针类似
char mystring[] = "HELLO";
char *my = mystring;
cout << my << endl;//HELLO
我们尝试打印它返回字符串的指针变量。
现在我已经阅读了这篇文章,并且我读到该字符串与他一起获取内存地址。但我仍然不明白为什么它们不一样,为什么一个字符数组打印字符串文字,而 int 数组打印第一个的地址。
提前致谢。
解决方案
为什么 chars 数组返回字符串文字,而 int 数组返回第一个的地址。
我认为“退货”一词的意思是“打印”。
因为非成员std::ostream::operator<<(ostream&, const char *)
重载遍历char*
指针指向的内存并打印它的内容,而没有std::ostream::operator<<(int*)
重载,所以int*
被强制转换为const void*
重载std::ostream::operator<<(const void*)
用于打印值,并且该函数打印指针的值。
您仍然可以通过手动转换来打印指向字符串的指针的值:
cout << static_cast<void*>(my_string) << endl;
推荐阅读
- netsuite - NetSuite 上的子公司 Navigator 不适用于自定义角色
- javascript - 如何使用 javascript 在我的网站上添加倒计时?
- sql - 在具有 X 和 Y 列的表中,是否可以放置约束以防止 X == Y 用于任何一条记录?
- r - psych::alpha - 由于“缺失”值而引发错误 - 只有少数,但没有缺失
- python - 在用户输入后停止游戏
- java - 如何在java中删除字符串末尾的多余逗号?
- javascript - 在ajax中将变量传递给模态
- c - c程序生成从1到n的二进制数
- drake - 德雷克符号中的 xreplace
- python - 如何在 django 中通过 TruncDay 使用 group by