首页 > 电脑

为什么将字符串赋值给字符指针2008版VS能通过,2017版VS编译不通过

更新时间2018-06-08 10:25:12

同样的char* a = "abc";放在VS2008版可以编译通过,放在VS2017中编译出错,提示不能将const char[4]转换为char*;

在属性配置中将字符集改为使用多字节字符集也没用,求大神指教???

这不是绝对的:当指针指向的字符串是常字符串时当然不能再赋值,因为目标是“常量”,而当指针指向的字符串不是常字符串时就可以再赋值,比如用动态申请内存方法创建的字符串。具体说就是用char *p="abcqer12345";这种方法定义字符串是不能通过指针改变内容的,原因是这个定义确定了abcqer12345是字符串常量——因为char *p="abcqer12345";被编译器解释为“创建一个字符串常量abcqer12345,并把它的首地址(就是a的地址)赋给char *型指针p”——既然是“常量”,自然就不能更改。

上一篇:MATLAB中BP神经网络通用程序怎么用来模式分类

下一篇:编程和英语,哪个更难学?