光辉 的个人资料胡言乱语照片日志列表更多 工具 帮助
2007/3/29

变态的C语言声明

 
请问以下每个A声明的是什么东西?
 
int (*A)[5];
 
int *(*A)[5];
 
int (*A[5])();
 
char (*(*A())[])();
 
char (*(*A[5])())[12];
 
答案如下:
 
int (*A)[5];
A是一个指向长度为5的 int 型数组的指针。
 
int *(*A)[5];
A是一个指向长度为5的 int* 型数组的指针。
 
int (*A[5])();
A是一个长度为5的数组 ,该数组中的项为返回 int 型的函数指针。
 
char (*(*A())[])();
char(*(*A())[])(); 首先 A与它右边的()结合形成A(),可以确定A是一个函数;
令F=A(),也就是说F是函数A()的返回值,原式变为char(*(*F)[])();
可以看出F是一个指针,令L=*F,那么L就是F指向的对象,原式变为char(*L[])();
可以看出L是一个数组,令P=L[],那么P就是数组L中的元素的类型,原式变为char(*P)();
可以看出P是一个函数指针。
 
从上面的分析可以看出:A是一个函数,这个函数没有任何参数,它的返回值是一个指针,这个指针指向一个数组,而这个数组的元素是char(*)()类型的函数指针。
 
char (*(*A[5])())[12];
首先A与它右边的[5]结合形成A[5],可以确定A是一个长度为5的数组;
令E=A[5],也就是说数组A[5]中的元素为E,原式变为char(*(*E)())[12],可以看出E是一个指针;
令P=*E,也就是说指针E指向P,原式变为char(*P())[12],可以看出P是一个函数;
令F=P(),也就是说函数P的返回值为F,原式变为char(*F)[12],可以看出F是一个指针;
令L=*F,也就是说指针F指向L,原式变为char L[12],很显然L是一个长度为12的char型数组。
 
从上面的分析可以看出:A是一个长度为5的数组,它的元素是函数指针,这个函数指针指向的函数没有参数并返回一个长度为12的char型数组。
 
 

2007/3/17

1,3,4,6如何运算得到24?

如何通过加减乘除运算使得1,3,4,6得到24?
 
6/(1-(3/4))
 
还有变态的题目:四个0如何运算得到24?
 
(0!+0!+0!+0!)! = 24
 
从一副扑克牌中任意取出四张牌,如何通过加减乘除运算使得其结果为24?
能否通过编程实现,输出所有的可能情况?
 
 
2007/3/3

读rsb诗有感

一个寒假都没有上网,今天打开msn便看到yang爷,yang爷说rsb写了诗给我们。rsb这厮还是一个怀旧男,看了他的文章,勾起我对往事的无限回忆。霎那间泪水模糊了我的双眼(本句纯属虚构),内心倍感惆怅。记忆将我带到了2000年的夏天,想当时rsb还是一个普通话说不好的腼腆少年,没事喜欢叫我fei ge。yang爷更是腼腆,每次文妹等人疯狂忽悠时,yang爷总是躲在被窝里,用被子遮住半边脸,只露出眼睛来,偷偷的笑。文妹这厮当时留个小分头,穿了个花花绿绿的大麻裤,给人的感觉相当高调。这厮忽悠到高潮处,总要发出“呵呵呵”的笑声。当时的小桥,我的印象有些模糊,关键是这厮的普通话讲得跟广东话一模一样,很难和他沟通。以上几头驴都是510的,我们512的驴当时很变态,刚到学校的第一天晚上,没怎么忽悠,一个个开着台灯,趴在写字台上只顾看书,当时的状态把隔壁的几头驴吓的半死。记得段小楼是和他父亲一起来的,他爸的北京话讲得是相当的溜,我愣是一个字都没听懂,段小楼则逊色不少,北京话讲得一点儿北京味都没有,但是很好听懂。沈驴当时作自我介绍时,微微一笑,露出两颗小虎牙,吓了哥哥我一跳。磊哥则表现出了沉稳成熟的风度,让人唏嘘不已。再后来,到了大三开学时,沈驴去了软件学院,我们宿舍迎来了一个超级变态xi爷。这厮来到我们宿舍之前,我们都是以姐妹相称,这厮来到之后,相互之间便都以“大爷”相称。这厮还引进了cm这款非常诱人的游戏,害得我跟磊哥疯玩cm,为此逃了不少课。俱往矣,我要去吃午饭了。