C primer plus 读书笔记第九章
本章的标题是函数。C的设计原则是把函数作为程序的构成模块。
1.函数概述
函数的定义:函数是用于完成特定任务的程序代码的自包含单元。
使用函数的原因:1.函数的使用可以省去重复代码的编写。2.使得程序模块化,更有利于阅读、修改和完善。以这种方式看待函数有利于把精力投入到程序整体设计而不是实现其细节。
函数同变量一样有多种类型。任何程序在使用函数之前都需要声明该函数类型。
函数参数、函数类型没啥说的,其他语言都会讲到。
PS:函数的结尾最好只使用一次return,这样更有利于阅读程序的人明白函数的执行流程。
2.递归
递归一般可以代替循环语句使用。有些情况下使用循环语句比较好,有时候使用递归更有效。递归方法虽然使程序结构优美,但其执行效率却没有循环语句高。一般情况下,选择循环更好一点。首先,因为每次递归调用都有自己的变量集合,所以需要比较多的内存; 第二,每次函数调用需要花费一定的时间,所以执行速度慢。但是在某些情况下,我们不能用简单的循环语句代替递归,所以有必要学习递归。
#include "stdio.h"
void up_and_down (int);
int main (void) {
up_and_down ();
;
}
void up_and_down (int n)
{
printf ("Level %d: n location %p\n", n, &n);
)
up_and_down (n+);
printf ("Level %d: n location %p\n", n, &n);
}
这个程序是典型的递归,运行结果如下,关键是理解堆栈的原理。

3.多源代码文件程序的编译
一般可以把多个函数放到同一个文件,还可以使用头文件,把函数原型都放到一个头文件中。
4.地址运算符
一元运算符&可以取得变量的存储地址。%p是输出地址的说明符。
下面引入指针的概念。指针是一个其数值为地址的变量。间接运算符*能够得到指针指向的变量的数值。声明指针时候,需要指针所指向的变量的类型,例如
int * pi;
pi的值是一个地址,在大多数系统中,pi的值是一个地址,在大多数系统中,它是由一个无符号整数表示,但是这并不表示可以把指针看作整数类型,因为指针是一种新的数据类型。
如何理解变量名,地址和数值:一个变量一般有两个属性:变量名和数值。程序被编译和加载后,同一个变量在计算机中的两个属性是地址和数值。变量的地址可以被看作是在计算机中的变量名。在很多编程语言中,变量地址只由计算机处理,对于编程人员完全不可见,但在在C语言中,可以使用运算符&来对变量地址进行操作。
编程练习比较简单,难度不超过书中的代码示例。
to be continued。。。
C primer plus 读书笔记第九章的更多相关文章
- 《C++ Primer》读书笔记 第一章
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...
- 《C++ Primer Plus 6th》读书笔记 - 第九章 内存模型和名称空间
1. 单独编译 1.1 头文件中常包含的内容: 函数原型 使用#define或const定义的符号常量 结构声明 类声明 模板声明 内联声明 1.2 只需将源代码文件加入到项目中,而不用加入头文件.这 ...
- C primer plus 读书笔记第一章
写在前面: 算法和数据结构是计算机学习的基础,而大部分书籍是用C/C++编写.所以有了把C语言重新学一遍的想法.这个系列主要是记录看C primer plus的一些笔记和部分课后习题的答案,不会总结的 ...
- 《C++ Primer》读书笔记—第二章 变量和基本类型
声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-12 ...
- 《利用python进行数据分析》读书笔记--第九章 数据聚合与分组运算(一)
http://www.cnblogs.com/batteryhp/p/5046450.html 对数据进行分组并对各组应用一个函数,是数据分析的重要环节.数据准备好之后,通常的任务就是计算分组统计或生 ...
- C primer plus 读书笔记第二章
这章的标题是C语言概述,内容大概是介绍一些简单的示例程序,来了解和熟悉C语言的一些基本特征. 这是书里的第一段代码,敲敲找找感觉.推荐在linux环境下写代码. PS:倒腾sublime text一下 ...
- 《C++ Primer》读书笔记—第一章 开始
声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.一个函数的定义包含四个部分:返回类型(retur ...
- [hadoop读书笔记] 第九章 构建Hadoop集群
P322 运行datanode和tasktracker的典型机器配置(2010年) 处理器:两个四核2-2.5GHz CPU 内存:16-46GN ECC RAM 磁盘存储器:4*1TB SATA 磁 ...
- 《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器(上)
构造方法 在Python中创建一个构造方法很容易.只要把init方法的名字从简单的init修改为魔法版本__init__即可: >>> class FooBar: ... d ...
随机推荐
- sql 学习笔记 p46
交换行 update tab1 set c1=c2,c2=c1 .说明sql是临时表的存储,在查询出来的结果为决定前,可以随意操纵临时表中的列 update tab set c1=c1+(selec ...
- 国内各IE内核浏览器所调用的IE版本--转了
60浏览器,腾讯浏览器,世界之窗,遨游…IE的套套浏览器真是到处都是,在日常生活中,身边的朋友用的也不少,毕竟很多人对浏览器这东西不了解,在他们眼里,神马内核一点区别都没有,但咱们做前端的对这些东西可 ...
- NPM环境搭建
1. NPM全局路径:配置npm包的安装位置,在你的用户文件夹下,新建.npmrc文件:cache=D:\NodeJs\nvm\npm-cache 表示缓存文件夹 prefix=D:\NodeJs\n ...
- 日期Calendar/Date的用法
package cn.jason.datas; import java.util.Date;import java.text.ParseException;import java.text.Simpl ...
- Static Class (静态类)
一般情况下是不可以用static修饰类的.如果一定要用static修饰类的话,通常static修饰的是匿名内部类. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的(利用static ...
- JavaScript中instanceof与typeof运算符的用法及区别详细解析
JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...
- JQuery Easy Ui dataGrid 数据表格 ---制作查询下拉菜单
JQuery Easy Ui dataGrid 数据表格 数据表格 - DataGrid 继承$.fn.panel.defaults,使用$.fn.datagrid.defaults重载默认值.. 数 ...
- 3.5 linux 0.11 目标文件格式
在Linux0.11系统中,GNU gcc或gas编译输出的目标模块文件和链接程序生成的可执行文件都使用了UNIX传统的a.out格式.这是一种被称为汇编与链接输出(Assembly & li ...
- jQuery MVC 科室异步联动
//科室改变,级联医生 js $("#DepartmentId").change(function () { if (isNaN($(this).val())) { $(" ...
- Extjs中numberfield小数位数设置
在默认的情况下,使用numberfield控件时只会显示两位小数,有的时候需要根据业务来确定显示小数的位数.通过设置下面的属性可以达到我们想要的目的: text : '存煤量(万吨)', dataIn ...