【问题标题】:Excess elements in array initializer C++ char Xcode数组初始值设定项 C++ char Xcode 中的多余元素
【发布时间】:2015-10-10 10:21:26
【问题描述】:

我的名字有六个字母,我的名字有四个。

不正确的代码将生成并打印:

char myName[4][6] = {{'x', 'x', 'x', 'x', 'x', 'x'}, {'x', 'x', 'x', 'x'}};

但正确的代码不会:

char myName [6] [4] = {{'x', 'x', 'x', 'x', 'x', 'x'}, {'x', 'x', 'x', 'x'}};

是否有原因:

  • 第二个数组[4] 正在应用于第一组字符?
  • 第一个数组[6] 正在应用于第二组字符?

我使用的是最新版本的 Xcode。是否存在某种故障,数组被反转或其他什么?我环顾四周,但找不到任何解释。

【问题讨论】:

    标签: c++ arrays xcode char osx-yosemite


    【解决方案1】:

    这是因为 char myName[4][6] 是一个由六个 char 数组组成的四元素数组(因此您的数据将适合)。其中char myName[6][4] 是四个char 数组的六个数组(不适合您的六个char 数组)。

    【讨论】:

    • 谢谢!这很有意义......在我观看的教程中 - 他输入了两个五个字母的名字并这样输入:char myName [5][5] = etc...把我吓跑了。
    • 虽然该答案是正确的,但您可以将其扩展一点以显示发布者真正想要的内容。发帖人的印象似乎是 myName[6][4] 声明了一个双元素数组,第一个元素是 6 元素数组,第二个元素是 4 元素数组,这是不正确的。
    【解决方案2】:
    字符[0] [0][1] [0][2]
    字符[1] [1][1] [1][2]

    此外,您可以将数组放入数组中。因此,如果您想象这一点,您可以拥有数页数组。只需链接做类似的事情..

    int a[0] = b[4];
    

    这会将 b[4][...] 放入 a[0] 的单个单元格中。对游戏或其他用途很有用。

    【讨论】:

    • 那么数组和字符都从 0 开始计数? (0、1、2等)也就是说char[2][4]其实就是5个字符的3个数组?
    • 顺便说一句,我相信对 b[4] 的访问是 a[0[0]]
    猜你喜欢
    • 2016-08-10
    • 2012-11-13
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多