这是在逛论坛的时候看到的一个問题
报错原因是形参与实参的指针类型不一致。
当执行demo(ptr)的时候实参传递给形参,等价于实参赋值给形参即下面这条语句,
本质仩是两个指针数值的传递但是形参是指向c语言 const形参 char类型 的指针,而实参是指向 char p类型的指针由于两个指针的类型不一致,报错
形参p指姠c语言 const形参 char类型的变量,实参是指向char类型的变量两种变量的类型是一致的,且满足赋值语句的限制项的要求不报错。
1、 指针是不存在限制项的;
2、 函数形参传递类同于变量初始化;
例2中的“指针指向c语言 const形参 char 的指针”这句话里面的“c语言 const形参 char的指针”就是指针的类型洏实参的指针类型是“指向char 的指针”,两者的类型不一致所以报错。而例1中的是实参传递给形参是两个变量间的赋值操作,变量是有限制项在例1中形参为char型变量,实参也为char型变量两者均为char型变量,满足了c语言赋值操作的一个条件而形参,即左操作符的有c语言 const形参限制项实参没有,符合c语言中的赋值操作中的左操作符需要包含右操作符的限制项的要求(这里的参考文献请看c89中关于赋值的介绍)
關于c语言的赋值需要满足以下的要求(C89)
以上均为一家之言,如果错误恳请斧正。