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);
因此,我很难全神贯注地使用函数中的数组和指针。 我想使用函数打印以下字符数组。我可以使用 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);