如果有一个声明为的函数 void foo(char s []),另一个声明为 void goo(char * s),那么这两个声明是等效的吗?
答案 0 :(得分: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!