摘要:
希望这次能玩得久些。http://www.proaz.net 阅读全文
摘要:
以前写过一篇阐述C语言中指针和数组区别的文章,最近很后知后觉地读《C专家编程》时发现居然有三章是在详细说这个问题,读完后算是把这个问题搞得更透彻了。遂用一组C源码和汇编码的对比来再次展示它们的区别。 (试验环境:Ubuntu Linux/GCC)源码(test.c):int fun1(){int a[1],b[1],*p=b;a[0]=0;*(p+0)=1;return 0;}免优化汇编码(gcc -S test.c):.file "test.c".text.globl fun1.type fun1, @functionfun1:pushl %ebpmovl %esp, % 阅读全文
摘要:
(注:本文属于《浅谈C语言下如何批量设置函数指针数组》一文的续写) 前几天由于太懒不想手动将动态链接库里共计上百个子函数的指针逐个赋入函数指针数组,所以想了个通过以第一个装入的函数的地址为起点,扫描函数头机器码并比对来自动设置函数指针数组的方法,成功达到理想效果(具体参见前一篇文章)并顺便在校内、Q空间和博客园发了出来供学习。虽然后来有某专家级程序猿童鞋指出这种方法其实很常用..但考虑到在解决实验问题的当初在网上查找相关资料时并没有找到类似的线索,就还是决定把方案完善后再补一贴希望能给其它初学者一定启示和帮助吧。 关于子函数“函数头”的问题(严格来讲并不能说是函数头,至少和源码中的... 阅读全文
摘要:
(注:一、文中实验环境为Ubuntu Linux/GCC;二、具体实现细节未做严谨化处理,只阐述抽象思想;三、这帖子本来是写挺细的,但保存到草稿再打开后就神马都没有了,不知道怎么回事,所以改简述……;四、鉴于实验程序非常复杂庞大,且涉及多文件链接,故在文中给出的代码只是个现编的不完善的示例代码。) 学过C语言的应该都对函数指针有所了解,忘了而且想看下去的请自行翻查课本,自己编码C/C++这些年没少用函数指针,更没少用数组(虽然我更喜欢用指针实现动态数组),但始终没碰过“函数指针数组”,因为一直鲜有这方面需求。今天下午在做一个基于Linux的通信协议相关的实验(C语言实现)时遇到了这样一个问题: 阅读全文