gpt4 book ai didi

c++ - for循环中的数组索引

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:06 25 4
gpt4 key购买 nike

我是 c++ 的新手,遇到了一个我不知道该怎么做的问题。当我遇到以下代码时,我正在做一本书中的一些示例。

for(int i=0;string[i];i++){
cout<<string[i];
}

这里的第二个参数不是 bool 值,而是给出了数组索引。基于该方法,我运行了以下代码,但没有成功。

char string[50] ="This is a test!";

for(int i=sizeof(string)-1;string[i];i--){
cout<<string[i];
}

cout<<"\n";

我调试了它,'string[i]' 的值为 0。所以我的问题是,

  1. 为什么使用数组索引而不是 bool 值(可以吗?)。
  2. 为什么我的第二段代码不起作用。

提前致谢。

最佳答案

bool 测试 string[i] 实际上只是检查是否遇到空字符 ('\0')。 C 中的所有字符串都以空字符结尾,因此这适用于字符串的前向迭代。但如果你要倒退,那就不行了。您应该检查 i 是否大于或等于零。

此外,sizeof(string) 返回数据类型的大小(50 字节,或可能更多),而不是它包含的字符串的长度。要获取字符串长度,请使用 strlen:

for( int i = strlen(string) - 1; i >= 0; i-- ) {
cout << string[i];
}

我建议不要将变量称为 string,因为这是标准库中的一种数据类型,如果将其用作变量名,C++ 程序员会感到困惑。尤其是当人们通常导入整个 std 命名空间并将字符串类称为 string 时。

这就像将所有数值称为“整数”。这样做实际上并没有告诉程序员它的用途,只是它是什么类型。请使用更具描述性的变量名称 =)

关于c++ - for循环中的数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353328/

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