我有这样的代码,但我不断收到此错误:

A value of type "const char*" cannot be used to initialize an entity of type "char *"

到底是怎么回事?
我已阅读以下主题,但无法看到我的答案的任何结果,因为它们都来自char to char*或者char*char:
值类型 const char 不能用于初始化 char* 类型的实体
char* 类型的值不能用于初始化"char"类型的实体

#include <iostream>;
using namespace std;

int main() {
    int x = 0; //variable x created
    int cars (14);//cars is created as a variable with value 14
    int debt{ -1000 };//debt created with value 1000
    float cash = 2.32;
    double credit = 32.32;
    char a = 'a';//for char you must use a single quote and not double
    char* sandwich = "ham";
    return 0;
}

我正在使用 Visual Studio Community 2017

答案

那是对的。

const char hello[] = "hello, world!";
char* jello = hello; // Not allowed, because:
jello[0] = 'J'; // Undefined behavior!

哎呀! const char*是一个非常量指针const charchar*,你已经失去了它const财产。

Aconst 指向 非常量char将是一个char* const,你可以初始化一个char*如果你愿意的话,可以整天这样。

如果你真的愿意,你可以通过以下方式实现这一目标const_cast<char*>(p),我偶尔也会这样做,但这通常是严重设计缺陷的迹象。可能错误在于某些实现会将常量存储在只读内存中并崩溃。

顺便说一句,C 中的规则是不同的。const关键字,并且您永远不应该编写使用字符串常量的非常量别名的新代码。

来自: stackoverflow.com