为什么这个C ++程序反向单词不起作用

河马

我对C ++极为陌生,并编写了此程序来反转单词。我尝试的是基本上遍历数组并将第一个字母与最后一个交换,第二个与第二个倒数交换,等等。但是结果是一些有线字符╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠Ω ⌠7p≈╗我不需要解决方法,因为在线上有很多示例。我只想知道为什么我在做什么不会起作用。

#include <iostream>
using namespace std;

int main()
{
    char word[10];
    for (int i = 0; i < 10; i++)
    {
        word[i] = word[sizeof(word - i)];
    }

    cout << word << endl;

    return 0;
}

这也给了我这个警告warning C6001: using uninitialized memory 'word'但是我虽然通过做初始化了内存char word[10]

马雷克

问题是sizeof(word - i)实际上在做什么

简短的答案:它返回指针大小(4或8)。

更详细的答案:

  • word有类型char[10]和大小10
  • 当您这样做时word + 1,编译器将衰减指向char的指针的数组以能够执行此操作。所以结果类型是char *
  • 现在sizeof(char *)是4或8,具体取决于您构建的平台(32或64位)
  • 所以word[sizeof(word - i)]总是指同一个单元格

还有第二个问题。在中C,字符串必须以null结尾,以指示其大小。您的word包含apple的末尾没有零字符,因此,在其后打印垃圾apple(它甚至可能使程序崩溃)。

另外,您的代码更像C,在C ++中可以这样完成:

int main()
{
    std::string word{"apple"};
    std::string reversed{word.rbegin(), word.rend()};
    std::cout << word << '\n';
    std::cout << reversed<< '\n';

    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么 C 中的这个 while 循环不起作用?

来自分类Dev

为什么这个基本的python程序不起作用?

来自分类Dev

为什么这个数字显示程序不起作用?

来自分类Dev

为什么 crtl-C 或 ctrl-Z 在这个程序中不起作用?

来自分类Dev

为什么这个for()循环不起作用?

来自分类Dev

为什么这个jQuery不起作用?

来自分类Dev

为什么这个jQuery不起作用?

来自分类Dev

为什么这个for()循环不起作用?

来自分类Dev

为什么这个removeDuplicate不起作用?

来自分类Dev

为什么“这个”不起作用?

来自分类Dev

为什么这个sed不起作用?

来自分类Dev

为什么这个填充不起作用?

来自分类Dev

为什么这个 .htaccess 不起作用?

来自分类Dev

为什么我的程序不起作用(python帮助中的反向功能)?

来自分类Dev

这个C程序为什么不会崩溃?

来自分类Dev

为什么这个C程序无限循环?

来自分类Dev

为什么这个 C 程序显示这个结果?

来自分类Dev

为什么使用setInterval()进行反向for循环不起作用?

来自分类Dev

谁能弄清楚为什么我的程序(在 C 中)用于将句子拆分为单词不起作用?

来自分类Dev

为什么这个对C#方法的jquery ajax GET调用不起作用?

来自分类Dev

为什么该程序不起作用?

来自分类Dev

为什么程序不起作用?

来自分类Dev

为什么我的C ++程序不起作用?

来自分类Dev

为什么这个使用yield from的Python程序不起作用?

来自分类Dev

为什么这个引导程序布局在 jsfiddle 中不起作用?

来自分类Dev

为什么这个美元符号构造不起作用?

来自分类Dev

为什么这个角度滤波器不起作用

来自分类Dev

为什么这个简单的enable_if不起作用?

来自分类Dev

为什么这个投影矩阵不起作用?

Related 相关文章

  1. 1

    为什么 C 中的这个 while 循环不起作用?

  2. 2

    为什么这个基本的python程序不起作用?

  3. 3

    为什么这个数字显示程序不起作用?

  4. 4

    为什么 crtl-C 或 ctrl-Z 在这个程序中不起作用?

  5. 5

    为什么这个for()循环不起作用?

  6. 6

    为什么这个jQuery不起作用?

  7. 7

    为什么这个jQuery不起作用?

  8. 8

    为什么这个for()循环不起作用?

  9. 9

    为什么这个removeDuplicate不起作用?

  10. 10

    为什么“这个”不起作用?

  11. 11

    为什么这个sed不起作用?

  12. 12

    为什么这个填充不起作用?

  13. 13

    为什么这个 .htaccess 不起作用?

  14. 14

    为什么我的程序不起作用(python帮助中的反向功能)?

  15. 15

    这个C程序为什么不会崩溃?

  16. 16

    为什么这个C程序无限循环?

  17. 17

    为什么这个 C 程序显示这个结果?

  18. 18

    为什么使用setInterval()进行反向for循环不起作用?

  19. 19

    谁能弄清楚为什么我的程序(在 C 中)用于将句子拆分为单词不起作用?

  20. 20

    为什么这个对C#方法的jquery ajax GET调用不起作用?

  21. 21

    为什么该程序不起作用?

  22. 22

    为什么程序不起作用?

  23. 23

    为什么我的C ++程序不起作用?

  24. 24

    为什么这个使用yield from的Python程序不起作用?

  25. 25

    为什么这个引导程序布局在 jsfiddle 中不起作用?

  26. 26

    为什么这个美元符号构造不起作用?

  27. 27

    为什么这个角度滤波器不起作用

  28. 28

    为什么这个简单的enable_if不起作用?

  29. 29

    为什么这个投影矩阵不起作用?

热门标签

归档