Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 数组声明_C_Arrays - Fatal编程技术网

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数组,或者更准确地说是指向字符串的指针的一维数组。