两个操作数都是指向有限定符或无限定符的相容类型的指针,左边指针所指向的类型必须具有右边指针所指向类型的全部限定符。(from c专家编程)

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
1 foo(const char **p){}
2 
3 main(int argc, char **argv){
4     foo(argv);
5 }

 

如果编译此代码,将会产生警告——第五行,参数与原型不匹配。

首先,argv的类型为指向char类型指针的指针,p为指向由const修饰的char类型的指针,前者指向char *, 后者指向const char *。

显然二者不相容。

然而经过我的测试,只要左右所指类型不相同,便会发出警告。

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄