我目前正在通过K & R学习C.作者提出了一个重要的区别,即指针和数组的行为相似,但它们不同,因为指针是一个变量,可以指向不同的东西而阵列没有这个能力。数组和指针不同
我明白这一点,但下面的代码混淆了我一点点:
int len, nlines;
char *p, line[MAXLINES]; /* Confusing part */
我知道,当你传递一个数组给它衰变为指针的功能,但在这里,你可以声明一个字符指针和字符数组在同一行,即使它们不同?也许我很迷惑自己,但这对我来说很奇怪。谢谢!
您可以在同一行声明多个事情,如果他们都具有相同的“根”类型,例如'int w,x,y [5],z(void);'声明两个int,一个int数组和一个返回int的函数。有些人不鼓励这种做法,每个声明更喜欢一个标识符。 –
p是一个指向char的指针。行是char的MAXLINES大小的数组。 –
这里令人困惑的是变量可以'修改'根类型。因此'char a,* b,** c'将会声明一个单独的字符'a',一个指向字符'b'的指针以及一个指向字符'c'的指针。类似地,当用于类似的声明风格时,数组'修改'根类型。因此,这就是为什么我见过的大多数现代C开发人员推荐在[tadman的回答](http://stackoverflow.com/a/43334568/510036)中描述的声明风格,而不是在单个声明行上。 – Qix