gpt4 book ai didi

c++ - 数组上的指针运算

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:32 24 4
gpt4 key购买 nike

当我运行下面的代码时,我的输出不是我所期望的。

我的理解是ptr指向Str数组第一个元素的地址。我认为 ptr + 5 应该指向第 + 5 个元素,即 f。所以输出应该只显示 f 而不是同时显示 fg

为什么显示fg?它与 cout 显示数组的方式有关吗?

#include <iostream>
using namespace std;

int main()
{
char *ptr;
char Str[] = "abcdefg";

ptr = Str;
ptr += 5;

cout << ptr;

return 0;
}

预期输出:f

实际输出:fg

最佳答案

当你声明时:

char Str[] = "abcdefg"

字符串 abcdefg 与一个额外的字符 \0 一起隐式存储,该字符标记字符串的结尾。

因此,当您cout char* 时,输出将是存储在char * 指向的位置的所有字符以及存储的所有字符在 char* 之后的连续内存位置,直到在其中一个内存位置遇到 \0 字符!由于 \0 字符在您的示例中位于 g 之后,因此打印了 2 个字符。

如果你只想打印当前字符,你应该这样做::

cout << *ptr;

关于c++ - 数组上的指针运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34844058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com