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)
当你说foo (*array),你正在将数组衰减成指向第一个元素的指针,以便取消引用该元素,为你提供第一个字符.这就是你想要传递给函数的东西.省略星号,然后将array其传递给你需要的指针.
另一个问题是你没有printf正确使用.首先,这是一个参考.您需要传递一串令牌,这些令牌告诉编译器接下来要接受哪种类型的参数,因为它无法说明.在您的情况下,您的字符串将包含"%s"告诉它期望a char *,然后您将array作为该char *参数传递.
printf ("The string is %s", array);
Run Code Online (Sandbox Code Playgroud)