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

标签 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 *);
             ^

最佳答案

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

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

在您的代码中:

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

删除 const 并且您的代码将编译:

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

关于c - 如何将字符串参数的指针传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43880843/

相关文章:

c - Web 浏览器不解释通过无符号字符数组传递的图像

c - while 中的动态内存分配

c++ - 为什么字符串在新编译器中不可修改

c - 缓冲区大小有限的缓冲区溢出攻击

c - 为什么 (5+10)/2 是 7.0 而不是 7.5? C编程

c - 将 float 舍入为 int

c - 无效的 connect() 调用意外成功 - 为什么?

c - 提取超过固定阈值的较低数字?

c - 了解代码示例是受 CPU 限制还是受内存限制

mysql - C fork 在 5 个 child 后停止