错误:从“constchar*”到“char*”的无效转换[-fpermissive]

首先,这不是重复的,因为之前问过同样的错误问题,但在不同的上下文中

1

代码

#include<iostream>
#include<cstring>

int main()
{
    const char *s1;
    const char *s2="bonapart";
    
    s1=new char[strlen(s2)+1];
    strcpy(s1,s2);
    
    std::cout<<s1;
}

输出

[Error] invalid conversion from 'const char*' to 'char*' [-fpermissive]

为什么会出现这样的错误?

如果我取代const char *s1char *s1 编译罚款。但我认为这const只是说 s1 指向常量字符串意味着我们不能修改它所指向的字符串。这并不意味着它s1常数 ptr。请对此有所了解。

回答

为什么会出现这样的错误?

看一下声明strcpy

char* strcpy( char* dest, const char* src );

特别注意第一个参数。并且要特别注意第一个参数的类型:char*. 不是const char*

现在,看看你传递的参数的类型。

const char *s1;

不是char*。它是const char*。您不能将 a 传递给const char*接受的函数,char*因为前者不可转换为后者,如诊断消息所述。

但是我认为这个 const 只是说 s1 指向常量字符串意味着我们不能修改它所指向的那个字符串。

正是这个const bchar*意思。那么,strcpy当你知道它不能被修改时,你期望如何修改指向的字符串的内容?从技术上讲,在这种情况下,指向的字符串不是常量,它只是由指向常量的指针指向


以上是错误:从“constchar*”到“char*”的无效转换[-fpermissive]的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>