摘要: 指针不仅可以指向数据,也可以指向函数,假设编写了integrated的函数用来求a和b点之间的函数f的积分。我们希望函数integrate通过传递f作为实际参数的方式变得更为通用函数integrate的原型如下:double integrate( double (*f)(double),double a, double b);在*f周围的圆括号说明f是个指向函数的指针,而不是函数的返回值为指针,把f声明成好像就是函数也是合法的double integrate( double f(double),double a, double b);在编译器看来,这种原型和前一种形式是完全一样的在调用函数in 阅读全文
posted @ 2012-03-22 21:29 foreverlearn 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 转自:http://developer.51cto.com/art/201104/256820.htm一.C语言中的static关键字在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。(1)修饰局部变量一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变化,但是其作用域并没有改变,其仍然是一个局部变量,作用域 阅读全文
posted @ 2012-03-22 20:31 foreverlearn 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 第五章:对链接的思考动态链接允许系统提供一个庞大的函数库集合,可以提供多种有用的服务,但是程序将在运行时寻找他们,而不是把这些函数库的二进制代码作为自身可执行文件的一部分静态链接:如果函数库的一份拷贝是可执行文件的物理组成部分,称之为静态链接,动态链接:如果可执行文件只是包含了文件名,让载入器在运行时能够寻找到所需要的函数库,我们称之为动态链接----------------------------------------------------------------------------------动态链接的优点:动态链接的优点是可执行文件的体积可以非常小,虽然运行速度稍微慢一些,但动态 阅读全文
posted @ 2012-03-22 19:53 foreverlearn 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 第6章:运行时的数据结构BSS段是“Block Started by Symbol(由符号开始的块)”。BSS只保存没有值的变量,运行时所需要的BSS段的大小记录在目标文件中,但BSS并不占据目标文件的任何空间。c程序的存储空间布局:说明:正文段:由CPU执行的机器指令部份,通常是正文段可以共享的且通常是只读的,以防止程序由于意外而修改其自身指令。初始化数据段:通常被称为数据段,包含了程序中需明确地赋初值的变量。非初始化数据段(bss block started by symbol):程序开始前,内核将此段中的数据初始化为0或空指针。如以下声明:longsum[100];将会被放于非初始化数据 阅读全文
posted @ 2012-03-22 08:49 foreverlearn 阅读(173) 评论(0) 推荐(0) 编辑