繁体   English   中英

const char数组的初始化作为重载函数的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM