gpt4 book ai didi

c++ - 这段代码如何以索引 1 开始一个 C 风格的字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:21 27 4
gpt4 key购买 nike

const int MAXN = 100;
char s[MAXN];
cin >> s + 1;
for (int i = 1; i <= strlen(s); i++) {
cout << s[i];
}

这段代码是我 friend 写的。我想知道 cin >> s + 1 到底是什么意思。在这种情况下,C 风格字符串以索引 1 开始,以索引 strlen 结束。我很困惑,因为 C 风格的字符串以 0 开头并以 strlen - 1 结尾。

最佳答案

C 风格的字符串只是一个字节数组。您可以根据自己的喜好对数组进行索引(只要您保持在数组的范围内)。问题中的代码只是忽略数组的第一个元素(索引 0 处的元素)。

如果为表达式 s + 1 引入别名,也许您可​​以更好地理解代码:

const int MAXN = 100;
char s[MAXN];
char *t = s + 1;
cin >> t;
for (int i = 1; i <= strlen(t); i++) {
cout << s[i]; // which is the same as t[i-1]
}

注意条件 i <= strlen(s + 1)是可疑的:它将在输出中包含终止 NUL 字符。

关于c++ - 这段代码如何以索引 1 开始一个 C 风格的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57153379/

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