簡體   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