形参是const char,实参可以用char吗

如题,一个函数的形参是const char,调用时实参可以用char吗,为什么可以或者为什么不可以呢

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/322863
  • 你也可以参考下这篇文章:解决不能将 “const char *“ 类型的值分配到 “char“ 类型的实体问题
  • 除此之外, 这篇博客: 关于char const **p、char * const *p、char ** const p的区别中的 理解思路 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 理解方法:将const当作函数,后面跟什么,什么就不变。
    首先区别const char *p, char const *p,char * const p三者的区别:
    (1)const char *p
    (2)char const *p
    (3)char * const p

    (1)和(2)其实是一样的,p是一个指向const char的指针,都是*p不能变,即值不能修改。(3)中表示p是一个指向char的const指针,即地址不能变,p 的指向不能修改。

    所以,沿用此方法,char const **p、char * const *p、char ** const p就相对好区分了。
    char const **p:const修饰**p,所以p二级指针的值不能改,即**p不能进行赋值。
    char * const *p:const修饰*p,所以*p不能修改。
    char **const p:const修饰p,所以指针p不能进行重新的指向,所以在初始化时就要进行重新定向。

    以上是本人的一点理解,有不足之处希望各位指出。

看不同的编译器吧,有些可以有些不可以,参数类型不一致的情况,编译器没有那么严格的话基本上就是警告,可以忽略,有些编译器就必须严格按照参数类型书写,否则就报错。