如果有一个函数被声明为 void foo(char s[])而另一个被声明为void goo(char *s),那么这两个声明是否等效?
问问题
205 次
1 回答
7
是的,当作为参数传递给函数时,数组总是衰减为指针。
这将打印相同的结果:
#include <stdio.h>
void foo(char* arg, int size)
{
int i;
for (i = 0; i < size; i++)
printf("%c", arg[i]);
printf("\n");
}
void bar(char arg [], int size)
{
int i;
for (i = 0; i < size; i++)
printf("%c", arg[i]);
printf("\n");
}
int main()
{
foo("Hello, World!", 13);
bar("Hello, World!", 13);
return 0;
}
输出:
./a.out
Hello, World!
Hello, World!
于 2013-05-29T14:20:18.410 回答