【十】递归

1、什么是递归? 递归是一种数学上分而自治的思想 递归将大型复杂问题转化为与原问题相同但规模较小的问题进行处理 递归需要有边界条件 当边界条件不满足时,递归继续进行 当边界条件满足时,递归停止 2、利用递归,实现斐波拉契数列什么叫斐波那契数列? 又称黄金分割数列,指的是这样一个数列:0、1、1...

2015-05-27 21:32:51

阅读数 589

评论数 0

【九】栈与递归--程序栈空间

1、C语言中的疑惑C语言中常说“局部变量在栈上分配空间”,那么这个地方的“栈”和我们之前学习的栈数据结构有关系吗?解答: 保存局部变量的栈是函数调用时的栈; 程序中的“函数调用栈”是栈数据结构的一种应用; 函数调用栈一般是从高地址向低地址增长的 栈底为内存的高地址处 栈顶为内存的低地址处 函数调...

2015-05-27 20:54:26

阅读数 1792

评论数 0

【C语言复习(三十)】函数的调用行为

函数的调用行为 1、关于活动记录 活动记录是函数调用时用于记录一系列调用相关信息的记录,大概有如下几个内存域: 临时变量域:用来存放临时变量的值,如顺序点求值中k++的中间结果 局部变量域:用来存放函数本次执行中的局部变量; 机器状态域:用来保存调用函数之前有关于机器的状态信息、包括各种...

2014-06-26 11:41:31

阅读数 495

评论数 0

【C语言复习(二十九)】可变参数的函数

1、可变参数简介 C语言中可以定义参数可变的函数; 参数可变函数的实现依赖于stdarg.h头文件 va_list变量与va_start、va_end、va_arg配合使用能够依次访问参数值;   示例: 不定个数的数据的平均值: #include  #include    float avera...

2014-06-26 10:21:01

阅读数 446

评论数 0

【C语言复习(二十八)】函数本质、顺序点

函数本质 1、函数的意义 大概也就是模块化程序设计吧.... 在面向过程是一种以过程为中心的编程思想,首先将复杂的问题分解为一个个容易解决的问题,分解过后的问题可以按照步骤一步步完成,每一步都使用一个独立的函数来实现,函数是面向过程在C语言中的体现。   2、函数的声明和定义 函数的声明和定义是不...

2014-06-25 11:01:51

阅读数 526

评论数 0

【C语言复习(二十七)】野指针和内存操作分析

1、初识野指针        野指针通常是因为指针变量中保存的值不是一个合法的内存地址而造成的; 野指针不是NULL指针,是指向不可用内存的指针; NULL指针不容易用错,因为if语句很好判断一个指针是不是NULL; 2、野指针的由来 局部指针变量没有被初始化 使用已经释放过后的指针 指针指向的...

2014-06-24 18:10:42

阅读数 564

评论数 0

【C语言复习(二十六)】各个目标文件的关系

程序中通常会有大量的函数调用,这些被调用的函数只要有声明(而不需要定义实现),编译器就可以成功处理。在生成可执行文件的过程中,连接器将各个可执行程序的代码段组合到一起,而有函数调用的地方还需要找到真正的函数定义才可以完成连接。因此,函数的定义和调用者可以在一个代码段内,也可以在不同的代码段内。连接...

2014-06-24 15:07:28

阅读数 654

评论数 0

【C语言复习(二十五)】可执行程序的组成

13.3.1 可执行程序的组成 上一节分析了C语言应用程序中各段的情况,实际的C语言可执行程序,将由各个文件经过连接生成。目标文件是由每一个C语言源程序(*.c)经过编译器生成,目标文件(.o)的主要组成部分即代码段、只读数据段和读写数据段三个段。未初始化数据段、堆和栈不会占用目标文件的空间...

2014-06-24 15:00:42

阅读数 648

评论数 0

【C语言复习(二十四)】C语言程序内存结构总结

详细资料请参考: 【C语言复习(二十一)】C语言程序的存储区域 【C语言复习(二十二)】C语言程序的内存段 【C语言复习(二十三)】C语言程序中段的使用   根据前三篇文章的介绍,这里做一个简单的总结 1、三国天下 一个C语言程序在运行时,内存结构分为:全局静态区、动态区;动态区...

2014-06-23 11:00:29

阅读数 555

评论数 0

【C语言复习(二十三)】C语言程序中段的使用

3.2.2  程序中段的使用 本小节使用简单的例子,说明C语言中变量和段的对应关系。C语言程序中的全局区(静态区),实际对应着下述几个段: 只读数据段:RO Data 读写数据段:RW Data 未初始化数据段:BSS Data 一般来说,直接定义的全局变量在未初始化数据区,如果该变量有...

2014-06-22 22:42:53

阅读数 569

评论数 0

【C语言复习(二十二)】C语言程序的内存段

接上一篇:《C语言复习(二十一)》 此篇

2014-06-22 22:14:23

阅读数 432

评论数 0

【C语言复习(二十一)】C语言程序的存储区域

此部分内容,参看了嵌入式Linux上的C语言编程实践

2014-06-22 21:51:23

阅读数 490

评论数 0

【C语言复习(二十)】动态内存分配

1、为什么要使用动态内存分配? C语言中的一切操作都基于内存; 变量和数组都是内存的别名,如何分配这些内存由编译器在编译期间决定: 定义数组的时候必须指定数组长度; 数组长度在编译期就必须决定; 由于以上的限制,如果在程序运行时,一旦预先定义的数组大小不够使用,那就需要重新分配内存大小,...

2014-06-20 10:57:15

阅读数 640

评论数 0

【C语言复习(十九)】函数与指针

1、函数的类型 C语言中函数有自己特定的类型 函数类型由返回值、函数参数、参数个数共同决定: 例如:int func(int i,int j);类型为:int(int,int) C语言中通过typedef为函数类型重命名: typedef type name(parameter list...

2014-06-19 22:24:00

阅读数 555

评论数 0

【C语言复习(十八)】数组参数和指针参数

1、退化的意义 在【C语言复习(十三)】数组和指针的第6小点中有说到,数组在作为函数参数时会退化为一个指向数组元素的指针,那么为什么C语言中的数组参数会退化为指针?? 原因可能如下: C语言中只会以值拷贝的方式传递参数; 不管是传值操作还是传址操作,其实本质上传递的还是值,这个概念在学过C++的朋...

2014-06-19 11:21:11

阅读数 1024

评论数 0

【C语言复习(十七)】多维数组和多维指针

1、指向指针的指针 指针变量在内存中会占用一定的空间,既然占用空间,那么就有地址,即是可以定义另外一个指针来保存当前指针的地址值; #include  int main() {     int a=50;     int* p=NULL;     int** pp=NULL;     pp=&am...

2014-06-18 19:06:20

阅读数 994

评论数 0

【C语言复习(十六)】main函数及其参数

main函数及其参数   1、简介 C中的主函数为main(),它是程序的入口,可以理解为被操作系统调用的函数; 在执行程序时,可以向main函数传递参数,通常有以下几种: int main() int main(int argc) int main(int argc,char *a...

2014-06-17 21:44:09

阅读数 651

评论数 0

【C语言复习(十五)】数组指针和指针数组

数组指针和指针数组 1、简单的思考 看如下代码:     int array[5];     int matrix[2][3];     int* pa=array; int* pb=matrix; 思考问题: 都知道,一位数组名array代表数组首元素地址,那么二维数组名matr...

2014-06-17 21:38:36

阅读数 492

评论数 0

【C语言复习(十四)】C语言中的字符串

字符串及其相关函数 1、C语言中的“字符串” 严格来讲,C语言中不存在字符串数据类型,都是以字符数组来模拟字符串的; C语言中字符串是以’\0’结束的字符数组; C语言中的字符串可以分配于栈空间、堆空间、或者只读存储区; 如下示例: #include  #include  int ...

2014-06-16 19:25:25

阅读数 429

评论数 0

【C语言复习(十三)】数组和指针

数组基础 1、数组的概念 数组是相同类型的变量的有序集合;如int num[5]; 00 2、数组地址与数组名 数组名代表数组首元素的地址; 数组的起始地址需要使用取地址符&才能得到; 数组首元素的地址值与数组的起始地址值相同,但却是不同的两个概念,如上图中所示; 3、...

2014-06-16 12:55:49

阅读数 503

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭