1.void foo(const char **p) {}
main(int argc,char *argv)
{
foo(arvg);
}
这个程序编译时会出错,(书上是说会发现一条警告,参数与原型不匹配),原因如下:
(1)按照ANSI C标准第6.3.2.2节中讲述约束条件小节中所描述的:
每个实参都应该具有自己的类型,这样它的值就可以复制给它所对应的形参的类型的对象(该对象不能含有限定符)。
这说明参数传递过程类似于赋值过程。
赋值过程在ANSI C中的约束条件为
(2)要使上述的赋值形式合法,必须满足下列条件之一:
两个操作数都是指向有限定符或无限定符的相容类型的指针,左边指针所指向的类型必须具有右边指针所指向类型的全部限定符。
时会