【发布时间】:2013-04-25 17:58:51
【问题描述】:
如果我用这样的方式声明一个数组:
const char var[]="Some message here";
然后有一个函数通过接受指向数组的指针来打印此消息,如下所示:
void printMessage(char *msg)
那么如果我这样调用这个函数有什么区别:
printMessage(var);
或者这个:
printMessage(&var[0]);
那么调用这个函数的更正确的方法是什么?
【问题讨论】:
-
两者是相等的,但是第一个写的少(也是最常用的)。
-
事实上你不能将数组传递给函数;您只能将指针传递给数组的第一个元素(或者,不太常见的是,指向整个数组的指针)。阅读comp.lang.c FAQ 的第 6 节;它很好地解释了 C 数组和指针之间经常令人困惑的关系。