[英]Initialization of const char array as argument of an overloaded function
这将编译,但它肯定是不正确的,我有奇怪的输出。 如果有人能告诉我正确的方法,我会很高兴的。
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
指向NULL
而不是空字符串,因为当用作函数参数时, const char c[]
被编译器视为const char *c
。
你可以做
void test(const char *c="");
代替。
我假设您使用的是C ++编译器,我建议您将问题标记为C ++,因为C没有默认参数或多态。
至于参数中的c[]
语法和行为,你可以在这里找到一个很好的讨论。
正如CisNOTthatGOODbutISOisTHATBAD所指出的那样,将c声明为数组以避免进一步混淆是一种不好的做法。 因此,尽管const char c[]=""
也可以使用,但这不是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.