C 将 char 数组传递给函数和指针

C passing char array to a function and pointers

因此,我很难全神贯注地使用函数中的数组和指针。 我想使用函数打印以下字符数组。我可以使用 for 循环在函数外部打印它们,但是当我将相同的代码传递给函数时,函数 returns NULLS。我可以对此有所了解吗?

#include <stdio.h>

void printNames(char arr[], int size);

int main()
{
    
    char *names[4] = {"Bruce", "Clark", "Barry", "Diana"};

    //changed a typo
    for(int i = 0; i < 4; i++)
    {
        printf("%s ", *(names + i));
    }

    printNames(names, 4);

    return 0;


}

void printNames(char arr[], int size)
{
    for(int i = 0; i < size; i++)
    {
        printf("%s ", *(arr + i));
    }


}

您正在传递类型为 char *[] 的变量,即指向 char 的指针数组传递给需要 char * 的函数,即指向 char 的指针。此外,在 printNames 内部,当 %s 格式说明符需要 char * 时,您将单个 char 传递给 printf。您的编译器应该已经警告过您这两个问题。

您需要更改 printNames 的定义,使参数类型与传入的内容相匹配,并与您要传递给 printf 的内容相匹配。

void printNames(char *arr[], int size);