gpt4 book ai didi

c - 如何将字符串值传递给 C 中的函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:49 25 4
gpt4 key购买 nike

这让我很困扰。它给了我一个警告

passing argument 1 of ‘funcName’ discards qualifiers from pointer target type

但是,程序运行良好并打印提交的值。

函数如下

void funcName(char *str) {
printf("%s", str);
}

void main() {
funcName("Hello world");
}

输出是 Hello world。

最佳答案

因为"Hello, world"是常量,所以把函数改成

void funcName(const char *text) 
{
printf("%s\n", text);
}

字符串文字是常量,它们存储在程序的只读内存部分,传递不带 const 的指针意味着您可能会在目标函数中不小心修改它,如果这样做,这会导致未定义的行为,而编译器正试图保护您免受这种情况的影响。

此外,void main() 不是 main() 的符合标准的有效签名,您可以在标准之前的旧书中找到它,但现在它不再被接受,接受和标准签名是

  • int main(void) 如果您不处理命令行参数。
  • int main(int argc, char **argv) 处理存储在 argv 中的 argc 参数,这些参数在命令行中传递。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com