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