【发布时间】:2019-09-24 23:59:17
【问题描述】:
以下代码有效:
#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";
编译器抛出错误。
为什么字符指针(我认为它是一个指针)使代码工作,而它从未在整个代码的其他地方使用?
我查看了以下链接,但我对解释感到困惑:
error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
【问题讨论】:
-
您是否尝试执行此操作 "char ssid = "Your wifi Network name"; '?
-
我想知道为什么我需要 *char 以及为什么 char 不起作用
-
char是单个字符。它不能容纳"Network password"。您需要一个数组来将文字复制到或仅指向您在工作代码中所做的文字。 -
char 只是一个字符的表示。 const char * 是指向单个字符的指针。 C++ 和 C 中的字符串文字是内存中一个接一个出现的字符块(contigious 就是这个词)。添加指针指向内存中的那个字符块。 C 中的字符串也总是以空字符结尾,所以当你有一个指向字符串开头的指针时,程序知道字符串会继续,直到遇到空字符(零)。
-
啊,这很有道理,谢谢。我想我会对此做更多的研究