<分区>
如果有一个函数声明为 void foo(char s[]) 和另一个声明为 void goo(char *s) ,那么这两个声明是等价的吗?
标签 c
<分区>
如果有一个函数声明为 void foo(char s[]) 和另一个声明为 void goo(char *s) ,那么这两个声明是等价的吗?
最佳答案
是的,当作为参数传递给函数时,数组总是衰减为指针。
这将打印相同的结果:
#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!
关于c - "char s[]"和 "char *s"是等效的函数参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16816386/