征服C指针中解答的疑惑

之所以回头去看C的内容,是因为自己学习php的过程中遇到了瓶颈,或者说是遇到了困难,以前翻阅php源码的时候,就感觉有问题,看的不太懂,很多c的内容搞不清楚,最近看libevent,这种感觉更加严重,于是去看看吧,翻阅一下c的基础,首选就是很久之前朋友推荐的《征服C指针》

我没有找到完整版的,目前的版本只有73页,不过还是解答了我的一些疑惑的,比如函数指针的使用,int(*func)(double)这种声明的函数指针可以被函数赋值,然后以后可以通过这个指针调用这个函数,其实我想看void指针,一种函数指针的声明,可以被几种类型的函数根据判断条件赋值,这样的话,就可以执行不同的流程,这个用处比较大。

关于结构体的内存的分配,其实一直都有两种方案,我挺好奇c是哪种方案的,一种是长度类型不确定通过特殊的控制字符找到对应的内容,一种是长度确定,宁可丢失一部分空间,也要保证内存是整块整块的,前者在很多时候会节省内存,后者会因为有规律的保存,可以加快索引的速度,c采用的是后者,果然效率优先,比如char ,double共存在一个结构体的时候,消耗的内存肯定不是1+8,而是4+8,因为要保证是4的倍数,加快速度。而结构体数据的命名,我想应该会像mysql的表那样,满足一个一对多的关系,一个表里面存储变量的名字,或许还有类型,其他的存储数据的地方保存了第一个表的地址,以后通过这个访问变量的名字和类型。

还有重新复习了c函数指针的堆栈的概念

Leave a comment

Your email address will not be published.

*