数组声明

时间:2015-01-30 01:03:58

标签: c arrays

考虑以下声明:

char *name[]={"John","Beckham"}; 

这被视为2D数组吗?

因为我的教授告诉我,这不是2D阵列,而是其他东西,

如果是,我们可以说我们可以在不指定尺寸的情况下声明2D数组。

2 个答案:

答案 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