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 *);
^
最佳答案
那不是你的问题。您的问题是您添加了 const
关键字,这意味着您有一个指向值数组的指针,其中值数组无法更改。
可以查看this以获得更好的解释。
在您的代码中:
int main(int argc, char const *argv[])
删除 const
并且您的代码将编译:
int main(int argc, char *argv[])
关于c - 如何将字符串参数的指针传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43880843/