传递char数组作为参数

Rya*_*yan 8 c pointers function

任何人都可以向我解释我在这里不明白的地方吗?

我试图将参数作为"字符串"传递(我知道c中没有字符串),以便我可以稍后使用该字符串与其他函数一样,例如它必须传递的文件名.但我不知道它为什么不接受它或它应该是什么类型

#include <stdio.h>

int main ( int argc, char *argv[] )
{
    char *array= argv[0];
    foo(*array);
}

void foo( char *array) 
// notice the return type - it's a pointer
{
    printf(array);
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Tim*_*per 17

你应该像这样调用函数:

foo(array);
Run Code Online (Sandbox Code Playgroud)

你正在做的是取消引用指针,它返回一个char,这是字符串中的第一个字符.

你的printf电话也应该是这样的:

printf("%s", array);
Run Code Online (Sandbox Code Playgroud)

您的整个固定代码应如下所示:

#include <stdio.h>

void foo(char *array)
{
    printf("%s", array);
}

int main ( int argc, char *argv[] )
{
    // TODO:  make sure argv[1] exists
    char *array= argv[1];
    foo(array);
}
Run Code Online (Sandbox Code Playgroud)


chr*_*ris 5

当你说foo (*array),你正在将数组衰减成指向第一个元素的指针,以便取消引用该元素,为你提供第一个字符.这就是你想要传递给函数的东西.省略星号,然后将array其传递给你需要的指针.

另一个问题是你没有printf正确使用.首先,这是一个参考.您需要传递一串令牌,这些令牌告诉编译器接下来要接受哪种类型的参数,因为它无法说明.在您的情况下,您的字符串将包含"%s"告诉它期望a char *,然后您将array作为该char *参数传递.

printf ("The string is %s", array);
Run Code Online (Sandbox Code Playgroud)