环境:linux下使用g++编译
报错:warning: deprecated conversion from string constant to ‘char*’
意思:不接受字符串(string)转换为字符串常量(char*)
报错代码:
#include <iostream>
using namespace std;
void print(char *s)
{
cout<<s<<endl;
}
int main()
{
print("xiaomi");
return 0;
}
分析:
因为函数print的形参为char *s,表示字符串的地址,即可以通过字符串地址s修改字符串;而在main函数中使用print函数时,print("xiaomi")的实参是一个字符串常量,不能被修改,故编译器会警告。
解决办法:
法1:修改函数print的形参,改为print(const char *s),表示不能通过指针s修改字符串的值;
法2:在使用print时,可以先定义一个字符串数组char temp[20]后再使用,如:
char temp[20]="xiaomi";
print(temp);
法3:用string;
法4:重载。