C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 类型为“const char *”的值不能用于初始化“char *”类型的实体大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的代码,但我一直收到这个错误
const char *”类型的值不能用于初始化“char”类型的实体
*“.到底是怎么回事?
我已阅读以下主题,但未能看到任何结果,因为所有结果都是从char到char *或char *到char:
Value type const char cannot be used to initialize an entity of type char*
Value of type char* cannot be used to initialize an entity of type “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;
}

编辑:我正在使用2017年的视觉工作室社区

解决方法

那是正确的.假设您有以下代码

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

哎呦! const char *是一个指向const char的非const指针.如果将其值赋给非const char *,则会丢失其const属性.

指向非const char的const指针将是char * const,如果需要,您可以整天初始化char *.

你可以,如果你真的想要,用const_cast< char *>(p)实现这个,我偶尔也会这样做,但它通常是严重设计缺陷的标志.如果您实际上让编译器发出指令以写入由字符串常量别名的内存,则会得到未定义的行为.可能出错的许多事情之一是某些实现会将常量存储在只读内存中并崩溃.或者相同的内存字节可能会被重复用于多个目的,因为毕竟,我们警告过你永远不要改变它.

便说一句,C中的规则是不同的.这仅仅是为了与没有const关键字的C的早期版本向后兼容,并且您永远不应该编写对字符串常量使用非const别名的新代码.

大佬总结

以上是大佬教程为你收集整理的c – 类型为“const char *”的值不能用于初始化“char *”类型的实体全部内容,希望文章能够帮你解决c – 类型为“const char *”的值不能用于初始化“char *”类型的实体所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。