C 数组声明
考虑以下声明:C 数组声明,c,arrays,C,Arrays,考虑以下声明: char *name[]={"John","Beckham"}; 这是否被视为二维阵列 因为我的教授告诉我这不是2D数组而是其他的 如果是的话,我们可以说我们可以声明2D数组而不指定维度。它是一个字符数组*。它的长度是2。第一个元素是指向字符串文字“John”的指针,第二个元素是指向字符串文字“Beckham”的指针 整个结构是二维的,因为两个数字指定了char元素之一的位置(例如,字符“k”位于(1,3))。但它不是矩形的,因此它没有[2,7]这样的简单大小(因为没有(0,
char *name[]={"John","Beckham"};
这是否被视为二维阵列
因为我的教授告诉我这不是2D数组而是其他的
如果是的话,我们可以说我们可以声明2D数组而不指定维度。它是一个字符数组*。它的长度是2。第一个元素是指向字符串文字“John”的指针,第二个元素是指向字符串文字“Beckham”的指针
整个结构是二维的,因为两个数字指定了
char
元素之一的位置(例如,字符“k”位于(1,3))。但它不是矩形的,因此它没有[2,7]这样的简单大小(因为没有(0,4)元素)。它不是人们通常在谈论“二维数组”时所指的数组。它是一个字符数组*。它的长度是2。第一个元素是指向字符串文字“John”的指针,第二个元素是指向字符串文字“Beckham”的指针
整个结构是二维的,因为两个数字指定了
char
元素之一的位置(例如,字符“k”位于(1,3))。但它不是矩形的,因此它没有[2,7]这样的简单大小(因为没有(0,4)元素)。当人们谈论“二维数组”时,这不是通常所指的。当然,你的教授是对的。类型为T
的名为Arr
的数组可能如下所示
T Arr [] = { ... };
在这种情况下,T
是类型char*
,括号[]
表示char*
的数组
区别在于指针不是数组这一事实
有关差异的信息,请参阅 你的教授当然是对的。类型为
T
的名为Arr
的数组可能如下所示
T Arr [] = { ... };
在这种情况下,T
是类型char*
,括号[]
表示char*
的数组
区别在于指针不是数组这一事实
有关差异的信息,请参阅 这是迄今为止最好的答案。该声明具有2D数组的某些特征,例如,可以写入
char c=name[0][2]代码>,但它不是大多数C程序员认为的标准2D数组。我将它称为一个不规则的2D数组,或者更准确地说是一个指向字符串的指针的一维数组。这是迄今为止最好的答案。该声明具有2D数组的某些特征,例如,可以写入char c=name[0][2]代码>,但它不是大多数C程序员认为的标准2D数组。我会将其称为不规则的2D数组,或者更准确地说是指向字符串的指针的一维数组。