c++ - 为什么我打印的是 Hp 而不是空行?
问题描述
我有一个非常简单的问题,为什么这段代码的输出是这样的?
我正在使用带有 TDM-GCC 4.9.2 64 位的 Dev-C++ 5.11
#include <iostream>
using namespace std;
int main()
{
char *ptr;
char Str[] = "abcdefg";
ptr = Str;
ptr += 8;
cout << ptr;
return 0;
}
我希望代码打印一个空行。
出于某种原因,位置 7 似乎有一个空格字符,您可以通过更改ptr +=8;
为ptr+=7;
.
但对我来说更奇怪的是还有 3 个字符无法显示,除非您超出数组限制 2,在这种情况下,我们将 8 添加到指针。字符是:“H,(一个奇怪的填充正方形),p”
解决方案
我希望代码打印一个空行。
这种期望是错误的。程序的行为是未定义的。
由于某种原因,位置 7 似乎有一个空格字符
那没有。位置 7 处有一个空终止符。
但对我来说更奇怪的是还有 3 个字符无法显示,除非您超出数组限制 2 ...
访问超出其边界的数组的行为是未定义的。
推荐阅读
- python - 如何对分组数据集执行操作并替换原始df中的相应值?
- c++ - 服务器在我发送 ACK 后重新发送 syn/ack
- python - 如何将垂直列表转换为熊猫数据框?
- html - 如何自定义引导下拉菜单?
- r - 指数平滑误差分解误差(ts(x[1L:wind], start = start(x), frequency = f),
- python - 使用 .env 凭据创建 .json 文件以在 Heroku 上验证 Google Cloud
- javascript - app审核通过后无法获取manage_pages和publish_pages
- ios - 关联的枚举类型实现 CaseItratable
- php - 如何使用 PHP Windows 打印到 Star sp700 热敏打印机
- angular - mousemove 在 Angular 中连续触发变化检测