繁体   English   中英

为什么 const char* 到 const char 转换时出错?

[英]Why error on const char* to const char conversion?

以下代码有效:

#include <ESP8266WiFi.h>

const char *ssid =  "Your wifi Network name";     // replace with your wifi ssid and wpa2 key
const char *pass =  "Network password";

WiFiClient client;

void setup() 
{
   Serial.begin(9600);
   delay(10);

   Serial.println("Connecting to ");
   Serial.println(ssid); 

   WiFi.begin(ssid, pass); 
   while (WiFi.status() != WL_CONNECTED) 
   {
      delay(500);
      Serial.print(".");
   }
   Serial.println("");
   Serial.println("WiFi connected"); 
}

但是当线:

const char *pass = "Network password";

替换为:

const char pass = "Network password";

编译器抛出错误。

为什么字符指针(我认为它是一个指针)使代码工作,而它从未在整个代码的其他地方使用?

我查看了以下链接,但我对解释感到困惑:

错误:从 'const char*' 到 'char' 的无效转换 [-fpermissive]

char是单个字符。 char*是指向char的指针。

字符串文字是一个固定长度的const char[]字符数组。 您可以将const char[]数组分配给const char*指针,因为对数组名称的引用将衰减为指向数组中第一个元素的指针。 这就是为什么const char *ssid = "Your wifi Network name"; 作品。

您不能将const char[]数组或const char*指针分配给单个char 这就是为什么const char pass = "Network password"; 不起作用。

是的,代码中使用了指针,尽管您声称它们不是。 ssid指针作为输入传递给Serial.println() ,并且ssidpass指针都作为输入传递给WiFi.begin() 这两个函数都将字符串作为输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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