为什么会出现invalid conversion from char to char* -fpermissive的信息错误提示?

img


img


题目要求用外部函数实现,但是我想尝试一下不用外部函数实现,但是出错了

img

【以下回答由 GPT 生成】

问题分析: 在C语言中,函数的参数传递有两种方式:值传递和引用传递。对于基本数据类型(如int、float等),函数参数是通过值传递的方式进行传递的,而对于数组、指针等类型,函数参数是通过引用传递的方式进行传递的。

问题解答: 从错误提示信息"invalid conversion from char to char*"可以看出,出现错误的地方是将char类型的值转换为char指针类型的错误。导致这个错误的原因是在函数调用时,传入的参数类型与函数声明的参数类型不匹配。

具体来说,如果函数声明的参数类型是char*,表示该参数是一个指向字符的指针;而如果传入的参数是char类型,表示传入的是一个字符。将字符转换为字符指针是不合法的操作,因为字符指针需要指向一段内存空间,而字符类型只占用一个字节的内存空间。

示例代码: 下面是一个简单的示例代码,演示了出现"invalid conversion from char to char*"错误的情况:

#include <stdio.h>

void printString(char* str) {
    printf("%s\n", str);
}

int main() {
    char ch = 'a';
    printString(ch); // 调用函数时传入的参数是字符类型,而函数声明的参数是字符指针类型,导致出现错误
    return 0;
}

修改解决方案: 要解决这个问题,可以修改函数的参数类型,将参数修改为字符类型,或者在函数调用时传入字符指针类型的参数。

修改后的代码示例:

#include <stdio.h>

void printChar(char ch) {
    printf("%c\n", ch);
}

int main() {
    char ch = 'a';
    printChar(ch); // 正确调用函数,传入字符类型的参数
    return 0;
}

总结: 出现"invalid conversion from char to char*"错误的原因是参数类型不匹配,将字符类型转换为字符指针类型是不合法的操作。解决方法是修改函数的参数类型或者在函数调用时传入正确的参数类型。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^