关于c/c++中const char*是否可以赋值给char*变量的问题
c吧
全部回复
仅看楼主
level 3
njzhuangxr 楼主
char *a="Hello";
这个在最新的visual studio里面是错误的,但是在老版本里是成立的,而且在linux c里也成立【直到a[2]="a"这种篡改才会报错,不篡改都没事】
反而const char *a="Hello";始终合理,无论版本
话说char *a = "Hello";这种语句是否该成立呢?新版本禁止这种语法是否妥当?
2023年06月22日 13点06分 1
level 12
c一直都可以,c++不行。
2023年06月23日 03点06分 2
level 12
字符串字面量都是const的,需要用const_cast把属性去掉
2023年06月23日 03点06分 3
level 1
const是cpp发明的,c语言后来吸收了const,但是为了保持兼容还是允许字符串不加
2023年06月23日 04点06分 4
[真棒]原来如此,难怪const感觉问题不少。。。
2023年06月28日 09点06分
level 1
强转干它
2023年06月23日 12点06分 5
level 10
C语言支持,C++98部分支持,C++11不支持。
因为以前C语言没有 const 关键字,C++才有 const 关键字。后来C语言也从C++那边借来了 const 关键字,但是考虑兼容性问题,C语言允许 const 直接赋值给非 const 变量,而 C++ 不允许,除非 const_cast 。
C++98考虑兼容C语言的问题,部分支持这种写法,但是不可以往里面赋值。为了避免程序崩溃C++11干脆把这个禁了。你就只能 const_cast 了。
C和C++是两种不同的语言,有些东西C能用C++不能用,有些东西C++能用C不能用。不要把二者混为一谈。
2023年09月05日 06点09分 8
1