为什么 s[s[3]] = '1' 当字符 *s = "123" 时?


char* s = "123";
std::cout << s[s[3]] << std::endl; // prints 1
std::cout << s[3] << std::endl; // prints nothing?

我尝试运行以下代码段,第一个print语句输出1,而第二个语句(似乎(什么都不输出。当使用这里的char指针数组的长度取消引用指针时,会发生什么?

不清楚为什么要使用索引3(s[3](处字符的值来再次索引字符串。但在任何情况下,这里的关键点是使用char对数组进行索引。这意味着char被用作数字,转换很可能使用ASCII字符编码。

打印s[3]时没有打印出任何内容的原因是,s是一个长度为4的字符数组,最后一个字符是null终止符。Null表示数字0。null终止符标识字符串的末尾。但它不是可打印字符,因为它不是要打印的。它没有相关的英文字母,所以你不会打印任何东西。

当然,现在你可以看到s[s[3]]只不过是s[0],这就是字符";1〃;。

相关内容

  • 没有找到相关文章

最新更新