gpt4 book ai didi

c++ - 将 const char 数组初始化为重载函数的参数

转载 作者:太空狗 更新时间:2023-10-29 21:14:46 25 4
gpt4 key购买 nike

这会编译,但它肯定不正确,我得到了奇怪的输出。如果有人能告诉我正确的方法,我会很高兴。

void test(const char c[]={'\0'});       //It will compile but strange outputs
//void test(const char c[]={'x','\0'}); //compile error

void loop() {
const char c[] = {'u','h','u','\0'};

test();
test(c);
}

void test(const char c[]){
Serial.println(c);
}

最佳答案

默认初始化为零可能不是您想要的。您实际上是将默认值指向 NULL 而不是空字符串,因为 const char c[] 结果被编译器视为 const char *c 用作函数参数时。

你可以做到

void test(const char *c=""); 

相反。

我假设您使用的是 C++ 编译器,我建议您将问题标记为 C++,因为 C 没有默认参数或多态性。

关于参数中的c[] 语法和行为,您可以找到很好的讨论here .

正如 CisNOTthatGOODbutISOisTHATBAD 所指出的那样,将 c 声明为数组以避免进一步混淆是一种不好的做法。因此,尽管 const char c[]="" 也可以,但这不是一个好主意。

关于c++ - 将 const char 数组初始化为重载函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938917/

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