随笔 - 25  文章 - 29  trackbacks - 0
<2006年5月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(4)

随笔分类(22)

随笔档案(25)

文章分类(2)

文章档案(2)

相册

最新随笔

搜索

  •  

积分与排名

  • 积分 - 55870
  • 排名 - 402

最新评论

阅读排行榜

评论排行榜

1int (*  backarry(int (* arrayname )[3]) )  [3]
2{
3    return arrayname;
4
5};
      呵呵,是有点古怪

  再来个
 1int (*  backarry(int (* arrayname )[3]) )  [3]
 2{
 3      
 4    return arrayname;
 5
 6};
 7int (&  backarry(int (& arrayname)[3]))[3]
 8{
 9    for (int i=0;i<3;++i)
10    {
11        cout<<i;
12    }
13    return arrayname;
14};
15int main()
16{
17int array[3]={1,2,3};
18backarry(array);//会调用哪个呢??
19}
posted on 2007-06-12 16:09 黄大仙 阅读(1721) 评论(6)  编辑 收藏 引用 所属分类: c++

FeedBack:
# re: 1个形式怪异的函数[未登录] 2007-06-12 17:47 yy
没看懂,我是菜鸟。运行的是第二个。哪本书讲过?  回复  更多评论
  
# re: 1个形式怪异的函数 2007-06-12 19:43 xxx
这个不是函数  回复  更多评论
  
# re: 1个形式怪异的函数 2007-06-12 21:28 l0he1g
不是函数是什么^_^?只不过第一个的形参是一维数组首地址的引用,而第二个是首地址的地址,所以调用的是第一个。
把int (* backarry(int (* arrayname )[3]) ) [3]改为
不是函数是什么?只不过第一个的形参是一维数组首地址的引用,而第二个是首地址的地址,所以调用的是第一个。
把nt ( backarry(int (* arrayname )[3]) ) [3],
然后用g++编译,报错:
test.cpp:14: 错误:‘backarry’ 声明为返回一个数组的函数
test.cpp: In function ‘int backarry(int (*)[3])’:
test.cpp:17: 错误:从类型 ‘int (*)[3]’ 到类型 ‘int’ 的转换无效.
可知,那样写的只不过是返回一个int (*)[3]或int (&)[3]。
不过个人觉得这样的代码除了去唬人,没有什么实际意义。  回复  更多评论
  
# re: 1个形式怪异的函数 2007-06-12 22:26 无情公子
也不算怪!
以下代码在 CodeGear C++ Builder 2007 下编译通过。

int (* backarry(int (*arrayname)[3]))[3]
{
return arrayname;
};

typedef int (*int_array)[3];

int_array backarray2(int_array arrayname)
{
return arrayname;
}

int main(int argc, char* argv[])
{
int_array ia;

backarray2(backarry(backarray2(ia)));

return 0;
}  回复  更多评论
  
# re: 1个形式怪异的函数 2007-06-13 22:32 nono
有个所谓的"右左法则",看这种怪东西方便点  回复  更多评论
  
# re: 1个形式怪异的函数 2012-11-19 21:29 magz
第一个的函数参数的类型: int (* arrayname )[3]), 它等价于
int ( arrayname [])[3]), 又等价于
int arrayname[][3], 可见需要一个二维数组实参。
因此,在主函数中调用的肯定不是第1个函数,因为实参array是一维数组。
关于类型的讨论,见华中科技大学出版的《C++程序设计实践教程》。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理