c - "char s[]"和 "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/

相关文章:

c - 双链表仅打印最后一个值

c - 我想用 FILE 的自定义实现在 ANSI C 中模拟一个 FILE

解析(选项)参数的正确方法,有关 getopt(3) 和 argv 的问题

c - 如何覆盖 C 库中的 fprintf?如何将 GCC 选项添加到顶级 CMakeLists.txt?

c - 创建用于打印星星的递归函数

c - 如何从文件中读取变量

java - 为什么方法不能返回多个值

c - 我无法理解以下 while 循环的条件

c - gtk+/gtksourceview 如何插入行注释或 block 注释

c - 为等间距角度快速准确地迭代生成正弦和余弦