在C中声明字符串与整数的2D数组?

时间:2014-12-06 06:00:19

标签: c arrays string multidimensional-array character-arrays

为什么当我为字符串声明2D数组时,我需要使用'*'

char *month[12][10] = {"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November",
"December"};

但是当我为整数声明它时,没有必要吗?

int numbers[2][3]={1,2,3,4,5,6};

1 个答案:

答案 0 :(得分:1)

C中的原因“字符串”表示通过指向其第一个字符的来处理。

或者说另一种方式 - 在C语言中没有字符串类型,只有指向字符的指针。 按照惯例许多库将指向字符的指针视为“字符串”的开头,以0x00字节终止或接受“字符串”长度作为参数,但是没有字符串类型。

  

当我宣布整数时,没有必要吗?

原因整数由它们自己表示,而不是由它们的第一个字节地址表示。当您使用"引号符号时的内容"它有效地将指针指向其第一个字符,指向字符的指针在C中标记为char *ptr

当你看到:

char *str = "some string";

表示变量str获取字符s的地址。并且变量str被声明为指向字符,因此它是char *。它只是某些库的惯例,使用首字母处理它开头的字符串。