考虑以下声明:
char *name[]={"John","Beckham"};
这被视为2D数组吗?
因为我的教授告诉我,这不是2D阵列,而是其他东西,
如果是,我们可以说我们可以在不指定尺寸的情况下声明2D数组。
答案 0 :(得分:4)
这是char*
的数组。它的长度为2.第一个元素是指向字符串文字“John”的指针,第二个元素是指向字符串文字“Beckham”的指针。
整个结构是二维的,在某种意义上,两个数字指定其中一个char
元素的位置(例如,字符'k'位于(1,3))。但它不是矩形,所以它没有像[2,7]这样的简单大小(因为没有(0,4)元素)。当人们谈论“二维数组”时,人们通常会提到 。
答案 1 :(得分:2)
当然,你的教授是对的。名为Arr
的{{1}}类型的数组可能看起来像
T
在这种情况下,T Arr [] = { ... };
是T
类型,括号char *
表示[]
的数组。
差异依赖于指针不是数组的事实。
有关差异的信息,请参阅C FAQ。