C:如何将字符串参数的指针传递给函数?

时间:2017-05-09 22:30:16

标签: c

argv数组是一个列表指针,每个都指向相应的参数,第一个元素是命令行参数的数量,对吗?

我的问题是如何将字符串参数传递给函数?在这个小例子中,我只是试图在命令行中打印我作为参数写的文本。

#include <stdio.h>
#include <stdlib.h>

void ptest(char *);

int main(int argc, char const *argv[])
{
    ptest(argv[1]);
    return 0;
}

void ptest(char *ptr)
{
    printf("%s\n", ptr);
}

此代码无法编译。它给出了以下编译错误:

teste2.c:8:8: warning: passing 'const char *' to parameter of type 'char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
        ptest(argv[1]);
              ^~~~~~~
teste2.c:4:18: note: passing argument to parameter here
void ptest(char *);
             ^

1 个答案:

答案 0 :(得分:5)

那不是你的问题。您的问题是您已添加了const关键字,这意味着您有一个指向值数组的指针,其中值的数组无法更改。

您可以查看this以获得更好的解释。

在您的代码中:

int main(int argc, char const *argv[])

删除const,您的代码将编译:

int main(int argc, char *argv[])