1

如果有一个函数被声明为 void foo(char s[])而另一个被声明为void goo(char *s),那么这两个声明是否等效?

4

1 回答 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 回答