C 传递数组中第一个元素的地址时,为什么要写入&array[0]而不是array?

C 传递数组中第一个元素的地址时,为什么要写入&array[0]而不是array?,c,arrays,C,Arrays,在我发现的许多代码示例中,如果必须将数组传递给函数,它们会使用&Array[0]。有什么理由这样做吗?他们可以简单地编写数组。这是一个纯粹的风格问题,您应该做您的开发团队喜欢做的任何事情。就我个人而言,我喜欢使用普通的旧数组,如果我想用n个元素进行偏移,我会使用Array+n。但有些人发现这很混乱,甚至在n==0时也会使用&Array[n] 为了保护另一方,Array+n语法要求您了解更多关于C的知识,以便理解它。它既涉及数组退化为指针,也涉及指针算法。但在我看来,C程序员无论如何都需要知道所有

在我发现的许多代码示例中,如果必须将数组传递给函数,它们会使用&Array[0]。有什么理由这样做吗?他们可以简单地编写数组。

这是一个纯粹的风格问题,您应该做您的开发团队喜欢做的任何事情。就我个人而言,我喜欢使用普通的旧数组,如果我想用n个元素进行偏移,我会使用Array+n。但有些人发现这很混乱,甚至在n==0时也会使用&Array[n]


为了保护另一方,Array+n语法要求您了解更多关于C的知识,以便理解它。它既涉及数组退化为指针,也涉及指针算法。但在我看来,C程序员无论如何都需要知道所有这些东西,它不是一门复杂的语言。

这是一个纯粹的风格问题,你应该做你的开发团队喜欢做的任何事情。就我个人而言,我喜欢使用普通的旧数组,如果我想用n个元素进行偏移,我会使用Array+n。但有些人发现这很混乱,甚至在n==0时也会使用&Array[n]


为了保护另一方,Array+n语法要求您了解更多关于C的知识,以便理解它。它既涉及数组退化为指针,也涉及指针算法。但在我看来,C程序员无论如何都需要知道所有这些东西,它不是一种复杂的语言。

它在索引数组时更符合惯例,即与执行&array[n]相同。另外,人们经常很难知道数组的名称会评估第一个元素的地址。没有好的理由,事实上我会认为这是个错误。它是C,不是C++。数组中的地址(0)第一个元素——你回答你自己的问题:另外,我会提醒你去完成。确保您了解它们仅在上述情况下相同,而不是在所有情况下都相同。举个简单的例子,如果将这两个函数都传递给sizeof,结果会不同。一个返回以字节为单位的数组大小,另一个返回指针大小。希望helpsIt在索引数组时更符合约定,即与doing&array[n]相同。另外,人们经常很难知道数组的名称会评估第一个元素的地址。没有好的理由,事实上我会认为这是个错误。它是C,不是C++。数组中的地址(0)第一个元素——你回答你自己的问题:另外,我会提醒你去完成。确保您了解它们仅在上述情况下相同,而不是在所有情况下都相同。举个简单的例子,如果将这两个函数都传递给sizeof,结果会不同。一个返回以字节为单位的数组大小,另一个返回指针大小。希望这能有所帮助,但在我看来,C程序员无论如何都需要知道所有这些东西——同意。如果您正在处理一个实际的项目,并且不知道数组的语义,那么您已经处于非常糟糕的境地。生产代码不应该迎合初学者。在用C编程将近十年,在工业界工作了7年多之后,我还想说,如果我看到它是这样写的&arr[0],首先想到的是,它是否是由C新手编写的?也许他们只读过数组一章,还没有读指针?我真的不记得曾经见过任何好的开源/专业c代码以这种方式索引第一个元素。我很想看一个例子。但在我看来,C程序员无论如何都需要知道所有这些东西——同意。如果您正在处理一个实际的项目,并且不知道数组的语义,那么您已经处于非常糟糕的境地。生产代码不应该迎合初学者。在用C编程将近十年,在工业界工作了7年多之后,我还想说,如果我看到它是这样写的&arr[0],首先想到的是,它是否是由C新手编写的?也许他们只读过数组一章,还没有读指针?我真的不记得曾经见过任何好的开源/专业c代码以这种方式索引第一个元素。我想看一个例子。