【《C Primer Plus》读书笔记】第2章:C语言概述
【《C Primer Plus》读书笔记】第2章:C语言概述
- 【《C Primer Plus》读书笔记】第2章:C语言概述
- 2.1 简单的C程序示例
- 2.2 示例解释
- 2.3 简单程序的结构
- 2.4 提高程序可读性的技巧
- 2.5 进一步使用C
- 2.6 多个函数
- 2.7 调试程序
- 2.7.1 语法错误
- 2.7.2 语义错误
- 2.7.3 程序状态
- 2.8 关键字和保留标识符
- 2.9 关键概念
- 2.10 本章小结
【《C Primer Plus》读书笔记】第2章:C语言概述
2.1 简单的C程序示例
first.c程序:
#include<stdio.h>
int main(void)
{int num;num=1;printf("I am a simple ");printf("computer.\n");printf("My favorite number is %d because it is first.\n",num);//getchar();return 0;
}
运行结果:
2.2 示例解释
逐行分析first.c程序:
#include<stdio.h>
// #include是一条C预处理器指令,#表明C预处理器在编译器接手之前处理这条指令
// #include<stdio.h>的作用相当于把stdio.h文件的所有内容都输入该行所在的位置
// stdio.h是标准输入/输出头文件,包含printf()等函数
int main(void)
// C程序一定从main()函数开始执行
// int是main()的返回类型,这表示main()函数返回的值是整数,返回给操作系统
// void表示没有传入main()函数的信息
{/*一个简单的程序*//*希望能运行*/int num;// 声明,int是C语言的一个关键字,表示一种基本的C语言数据类型// num是一个标识符,也就是一个变量、函数或其他实体的名称num=1;// 赋值printf("I am a simple ");// 当程序运行到这一行时,控制权被转给printf(),执行结束后返回给main()printf("computer.\n");// \n表示换行符printf("My favorite number is %d because it is first.\n",num);// %d是占位符,指名输出num值的位置//getchar();return 0;//C标准要求main()函数返回一个整数
}
}
2.3 简单程序的结构
程序由一个或多个函数组成,必须有main()函数。
函数由函数头和函数体组成。
- 函数头:包含函数名、传入该函数的信息类型和函数的返回值
- 函数体:被{}括起来,由一系列声明、语句组成
简而言之,一个简单的C程序的格式如下:
#include<stdio.h>
int main(void){//语句return 0;
}
2.4 提高程序可读性的技巧
- 选择有意义的函数名
- 写注释
- 在函数中用空行分隔概念上的多个部分
- 每条语句各占一行
例:
#include <stdio.h>
int main(void) /*把2英寻(测水深的单位)转换为英尺*/
{int feet, fathoms;fathoms = 2;feet = 6 * fathoms;printf("There are %d feet in %d fathoms!\n", feet, fathoms);return 0;
}
2.5 进一步使用C
fathm_ft.c程序:
// fathm_ft.c
#include <stdio.h>
int main(void) /*把2英寻(测水深的单位)转换为英尺*/
{int feet, fathoms;fathoms = 2;feet = 6 * fathoms;printf("There are %d feet in %d fathoms!\n", feet, fathoms);printf("Yes,I said %d feet!\n", 6 * fathoms);return 0;
}
2.6 多个函数
two_func.c程序:
// two_func.c -- 一个文件包含2个函数
#include <stdio.h>
void butler(void);
int main(void)
{printf("I will summon the butler function.\n");butler();printf("Yes.Bring me some tea and writeable DVDs.\n");return 0;
}
void butler(void)
{printf("You rang, sir?\n");
}
我们发现,butler()函数在程序中出现了3次。
- 函数原型,告知编译器在程序中要使用该函数
- 函数调用
- 函数定义,即函数本身的源代码
2.7 调试程序
2.7.1 语法错误
略。
2.7.2 语义错误
下面简单介绍一下如何在VS Code中调试程序。
- 在编辑界面,行的左边单击一下,就可以设置一个断点
- 在右上角的运行按钮中选择调试C/C++文件
- 在左上角,能看到监控的变量
- 在正上方,有单步执行程序,点击后程序从一个断点执行到下一个断点
于是,我们逐步观察n , n2 , n3三个变量值的变化:
初始化,n , n2 , n3三个都未知。
n = 5,赋值,我们看到n变成5了。
n2 = n * n,赋值n2 = 5 * 5 = 25。
n3 = n2 * n2,赋值n3 = 25 * 25 = 625。
打印。
我们发现,n3不应该是n2的平方,而应该是:n3 = n2 * n(或n的三次方)才对。
2.7.3 程序状态
程序状态是在程序的执行过程中,某给定点上所有变量值的集合。
debug的三种办法:
- 脑补程序的逐步运行
- 在程序关键点插入printf(),做监视器
- 调试器
2.8 关键字和保留标识符
关键字是C语言的词汇,不能用作标识符(如,变量名)。如果使用关键字不当,编译器会将其视为语法错误。
保留标识符包括那些以下划线字符开头的标识符和标准库函数名,如printf()。C语言已经指名了它们的用途或保留它们的使用权,用它们表示其他意思可能会导致一些问题。
每个关键字的作用:C语言关键字
2.9 关键概念
程序员应该在符合C标准的编译器框架下,表达你希望程序如何完成任务的想法。
2.10 本章小结
- C程序由一个或多个函数组成。每个C程序必须有一个main()函数。
- C语言的大部分语言以 ; 结尾。
- 一门语言的语法是一套规则,用于管理语言中各有效语句组合在一起的方式。
- 关键字是C语言的词汇。
【《C Primer Plus》读书笔记】第2章:C语言概述相关推荐
- C程序设计-谭浩强 第三版-学习笔记第1章 C语言概述
第一章 C语言概述 1.C语言历史背景 C语言是在B语言的基础上发展起来的,兼具一般高级语言和低级语言的优点,可用来编写系统软件或应用软件. 1972-1973年,贝尔实验室在B语言基础上设计出C语言 ...
- 《C++ Primer》读书笔记—第六章 函数
声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程 一.函数基础 1.一个典型的函数定义包括以下内容:返回 ...
- 《C++ Primer》读书笔记—第三章 字符串、向量和数组
声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程 这一部分内容比较简单. string表示可变长的字符序 ...
- 《C++ Primer》读书笔记——第十三章_拷贝控制
一个类有5种特殊的成员函数:拷贝构造函数.拷贝赋值运算符.移动构造函数.移动赋值运算符.析构函数.如果没有定义这些拷贝控制成员,编译器会自动为它定义缺失的操作. A a; A b = a;//报错 1 ...
- 《C++ Primer》读书笔记 第三章
1.注意:头文件不应包含using声明.因为头文件的内容会拷贝到所有引用他的文件中去,对于某些程序来说,由于不经意间包含了一些名字,可能会产生名字冲突. 2.string类型的读入:用cin读入str ...
- oracle中值集限定词为灰色,《Oracle从入门到精通》读书笔记第四章 SQL语言基础之一...
4.1 SQL语言概述 4.1.1 SQL语言的特点 1.集合性 2.统一性 3.易于移植性 4.1.2 SQL语言的分类 1.数据查询语言(DQL)- select语句,查询数据 2.数据操纵语言( ...
- 《Oracle从入门到精通》读书笔记第四章 SQL语言基础之二
4.7 事务处理 4.7.1 事务概述 事务的4种属性:acid (1)原子性(atomic):事务是一个整体的工作单元,要么全部执行,要么全部取消. (2)一致性(consistency):所有的数 ...
- 【Python自然语言处理】读书笔记:第一章:语言处理与Python
原书:<Python自然语言处理>:https://usyiyi.github.io/nlp-py-2e-zh/ 语言处理与Python 原文:https://usyiyi.github. ...
- 量子计算与量子信息读书笔记——第1章简介与概述(上)
简介与概述 研究对象:使用量子力学系统能够完成的信息处理任务 基本概念涉及领域:量子力学.计算机科学.信息论和密码体系 历史背景 物理学 危机:经典物理学做出荒谬的预言 解决:量子力学理论创立 量子力 ...
- 《Java编程思想》读书笔记 第十三章 字符串
<Java编程思想>读书笔记 第十三章 字符串 不可变String String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修 ...
最新文章
- 如何取回服务器上的文件网页设计,毕业设计(论文)-基于内容中心网络开发平台的文件分享精选.docx...
- python基础入门:内置函数之排列组合函数教程
- linux socket bind 内核详解,Socket与系统调用深度分析(示例代码)
- 接口测试--测试工具apipost脚本大全
- 编写一个文件目录常用操作的类
- 【mac】Snagit截图时候鼠标变大太大的解决方法
- POJ 2709 Painter 【贪心算法】
- 如何使用大数据算法改善有效链接
- input输入格式转换插件-Vanilla Masker
- 一文带你彻底理解Linux的各种终端类型及概念
- 使用Emit的时候类型XXX尚未完成
- 小学信息技术了解计算机课件,小学信息技术《走进计算机》ppt课件
- Vue设置页面的title
- md 文件编辑 Markdown 使用教程
- 普洛斯库列科夫 线性代数习题集_转载)科大学长对数学系学弟学妹的忠告
- Excel常用的功能
- social-engineer-toolkit搭建-网站克隆钓鱼
- DeepLog:基于系统日志使用深度学习方法做异常检测和诊断
- 并发之Striped64(l累加器)
- 浅谈对transforms.ToTensor()和transforms.Normalize()函数的理解