是" char s []"和" char * s"等价函数参数?

时间:2013-05-29 14:18:27

标签: c

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

1 个答案:

答案 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!