[c++]字符串传参错误

函数及其参数类型

函数调用情况

[c++]字符串传参错误_第1张图片

错误显示:没有与之匹配的函数

这个错误是由于c++中的字符串常量类型是const char[] ,这个类型传参时用char数组接收会报错

编译器显示:
错误    C2664     无法将参数 2 从“const char [2]”转换为“char 【】”    

解决方法一:

将把代码中char类型数组全部用string类型替换,函数的参数接收类型也改成string类型

解决方法二:

在传参时将字符串常量强制类型转换成char*

函数和参数类型

函数调用方法:

 为什么会有这样的错误和与c语言的区别

遇到这个问题的小伙伴都很困惑,明明在c语言中我们传参是可以这样传的,为什么在c++中不行呢?

经过我的多次实验我发现在c++中,vs对字符串常量的类型定义是const char【】,如下图

[c++]字符串传参错误_第2张图片

 但是在c语言中字符串常量的类型是char【】,少了一个const

 [c++]字符串传参错误_第3张图片

这就导致了在vs环境下,char类型的不兼容,导致报错

但是在devc++环境下,这样的类型不兼容只是一个警告,不会报错

如有错误,烦请指正

你可能感兴趣的:(c++)