二级考试C 辅导:有关缺省变量值的限制计算机二级考试

文章作者 100test 发表时间 2009:04:10 00:05:07
来源 100Test.Com百考试题网


  在准标准C 中,有关缺省变量值的限制非常模糊。基于此,很多编译器允许开发人员将缺省变量值包含在函数声明,指向函数的指针和引用,成员函数的指针,以及typedef声明中。
  请看一下以下的程序:
  struct A
  {
  void func(int x=5)
  {
  }
  }.
  void g(int n=12)
  {
  }
  // 根据C 标准,不能在以下声明中使用缺省变量值。
  void (*pf)(inti=120).
  void (A::*pmf)(int j=50).
  typedef void (*PF)(inti=100).
  // 函数的引用
  typedef void (&.PRF)(inti=100).
  int main()
  {
  pf=g.
  PF pf2=g.
  pmf=&.A::func.
  A a.
  //这些调用使用了哪些缺省值?
  pf().
  pf2().
  (a.*pmf)().
  }
  A::func()和g()具有缺省变量值,这是合理的。然而,指针pmf,pf以及typedefPF也定义了缺省的变量值。根据C 标准,这是不规范的。
  这一代码的实际使用中,其中的一个问题是这些声明中提供的缺省值与A::func()和g()函数提供的值不一致。也就是说,很多编译器将这些代码作为非标准的扩展。当调用g()函数时,我的编译将120作为pf的缺省值;然而,对于pf2,它使用100作为它的缺省值。
  作为一种规则,应该避免使用指向函数的指针,成员函数的指针,以及typedef命名的缺省变量值。即使你的编译器接受了它们,在更高版本中它也可能不被接受。而且,这些代码也会降低程序的灵巧性,也会给那些无法判别哪些编译器接收何种缺省变量的开发人员带来误导。在使用这些缺省变量值的合法代码中,这里的建议是添加一些必要的注释,以说明需要哪些缺省变量值。
  2009年上半年全国计算机等级考试参考答案请进入计算机考试论坛
  2009年上半年全国计算机等级考试报名信息汇总
  2009年NCRE考试有新变化
  2009年全国计算机等级考试-大纲
  2009年上半年全国计算机二级考试试题及答案
  2009年上半年全国计算机等级考试试题答案汇总

相关文章


计算机二级考试C _C推箱子游戏计算机二级考试
二级C 辅导:C 中的EXIT与析构函数计算机二级考试
二级C 辅导:VC 编译错误信息大全计算机二级考试
二级考试C 辅导:C 长连接和短连接计算机二级考试
二级考试C 辅导:有关缺省变量值的限制计算机二级考试
二级考试C 辅导:C 类的友元成员计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛