数组初始化器中的多余元素



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

错误的代码将生成并打印:

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。是不是有什么问题数组被颠倒了?

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

<>以前char[0][0][1][0][2] 之前
char[1] [1][1] [1][2]

你也可以把一个数组放到另一个数组中。如果你想象一下,你可以有一页一页的数组。链接做点什么,比如…

int a[0] = b[4];

这将使b[4][…]]变成a[0]的单细胞。

最新更新