[英]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";
编译器抛出错误。
为什么字符指针(我认为它是一个指针)使代码工作,而它从未在整个代码的其他地方使用?
我查看了以下链接,但我对解释感到困惑:
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()
,并且ssid
和pass
指针都作为输入传递给WiFi.begin()
。 这两个函数都将字符串作为输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.