gpt4 book ai didi

c++ - 我可以在 C++ 中获得有关此 C 样式字符串的帮助吗?

转载 作者:可可西里 更新时间:2023-11-01 15:39:18 24 4
gpt4 key购买 nike

我正在尝试理解非托管代码。我有 C# 的背景,现在正在使用 C++。

为什么是这段代码:

#include <iostream>

using namespace std;

int main()
{
char s[] = "sizeme";

cout << sizeof(s);

int i = 0;
while(i<sizeof(s))
{
cout<<"\nindex "<<i<<":"<<s[i];
i++;
}
return 0;
}

打印出这个:

7
index 0:s
index 1:i
index 2:z
index 3:e
index 4:m
index 5:e
index 6:

????

sizeof() 不应该返回 6 吗?

最佳答案

C strings是“nul-terminated”,这意味着末尾有一个值为 0x00 的附加字节。当您调用 sizeof(s) 时,您将获得整个缓冲区的大小包括 nul 终止符。当您调用 strlen(s) 时,您将获得缓冲区中包含的字符串的长度,不包括 nul。

请注意,如果您修改 s 的内容并在末尾以外的其他地方放置一个 nul 终止符,那么 sizeof(s) 仍将是 7(因为那是s 的声明方式的静态属性)但 strlen(s) 可能会少一些(因为它是在运行时计算的)。

关于c++ - 我可以在 C++ 中获得有关此 C 样式字符串的帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7700506/

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