【发布时间】:2015-11-29 09:27:20
【问题描述】:
foo(char *s)foo(char *s[ ])foo(char s[ ])
所有这些有什么区别?
有什么方法可以修改作为参数传递的数组元素,就像我们使用& 传递int 或float 并修改实际参数的值一样?
【问题讨论】:
-
我很难理解你的意思,但第二个选项是错误的。它是指向数组的指针,因此实际上是指向指针的指针,而不是指向值的指针。第一和第二 - 它们之间没有区别。我将使用第一个来指示,我正在传递指向 char 的指针,第二个来指示,我正在传递 char 数组(指向表中第一个 char 的指针。)。问题的第二部分我根本不明白。您可以在所有这些方法中修改元素。
-
我的朋友
char *s[]不是字符数组。 -
char (*s)[]将是一个指向 char 数组的指针。char *s[]是一个字符指针数组。 -
感谢@DawidPi 我是 c 新手,不知道所有这些之间的区别,这就是为什么我可能列出了一个错误的选项
-
@Balraj 一旦最初的问题得到回答,请不要编辑问题并添加其他问题。如果您需要更多信息,可以使用答案下方的评论部分或提出新问题。谢谢。
标签: c arrays pointers argument-passing