【《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()函数。

函数函数头函数体组成。

  1. 函数头:包含函数名、传入该函数的信息类型和函数的返回值
  2. 函数体:被{}括起来,由一系列声明、语句组成

简而言之,一个简单的C程序的格式如下:

#include<stdio.h>
int main(void){//语句return 0;
}

2.4 提高程序可读性的技巧

  1. 选择有意义的函数名
  2. 写注释
  3. 在函数中用空行分隔概念上的多个部分
  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次。

  1. 函数原型,告知编译器在程序中要使用该函数
  2. 函数调用
  3. 函数定义,即函数本身的源代码

2.7 调试程序

2.7.1 语法错误

略。

2.7.2 语义错误

下面简单介绍一下如何在VS Code中调试程序。

  1. 在编辑界面,行的左边单击一下,就可以设置一个断点
  2. 在右上角的运行按钮中选择调试C/C++文件
  3. 在左上角,能看到监控的变量
  4. 在正上方,有单步执行程序,点击后程序从一个断点执行到下一个断点

于是,我们逐步观察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的三种办法:

  1. 脑补程序的逐步运行
  2. 在程序关键点插入printf(),做监视器
  3. 调试器

2.8 关键字和保留标识符

关键字是C语言的词汇,不能用作标识符(如,变量名)。如果使用关键字不当,编译器会将其视为语法错误。

保留标识符包括那些以下划线字符开头的标识符和标准库函数名,如printf()。C语言已经指名了它们的用途或保留它们的使用权,用它们表示其他意思可能会导致一些问题。

每个关键字的作用:C语言关键字

2.9 关键概念

程序员应该在符合C标准的编译器框架下,表达你希望程序如何完成任务的想法。

2.10 本章小结

  1. C程序由一个或多个函数组成。每个C程序必须有一个main()函数。
  2. C语言的大部分语言以 ; 结尾。
  3. 一门语言的语法是一套规则,用于管理语言中各有效语句组合在一起的方式。
  4. 关键字是C语言的词汇。

【《C Primer Plus》读书笔记】第2章:C语言概述相关推荐

  1. C程序设计-谭浩强 第三版-学习笔记第1章 C语言概述

    第一章 C语言概述 1.C语言历史背景 C语言是在B语言的基础上发展起来的,兼具一般高级语言和低级语言的优点,可用来编写系统软件或应用软件. 1972-1973年,贝尔实验室在B语言基础上设计出C语言 ...

  2. 《C++ Primer》读书笔记—第六章 函数

    声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程 一.函数基础 1.一个典型的函数定义包括以下内容:返回 ...

  3. 《C++ Primer》读书笔记—第三章 字符串、向量和数组

    声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程 这一部分内容比较简单. string表示可变长的字符序 ...

  4. 《C++ Primer》读书笔记——第十三章_拷贝控制

    一个类有5种特殊的成员函数:拷贝构造函数.拷贝赋值运算符.移动构造函数.移动赋值运算符.析构函数.如果没有定义这些拷贝控制成员,编译器会自动为它定义缺失的操作. A a; A b = a;//报错 1 ...

  5. 《C++ Primer》读书笔记 第三章

    1.注意:头文件不应包含using声明.因为头文件的内容会拷贝到所有引用他的文件中去,对于某些程序来说,由于不经意间包含了一些名字,可能会产生名字冲突. 2.string类型的读入:用cin读入str ...

  6. oracle中值集限定词为灰色,《Oracle从入门到精通》读书笔记第四章 SQL语言基础之一...

    4.1 SQL语言概述 4.1.1 SQL语言的特点 1.集合性 2.统一性 3.易于移植性 4.1.2 SQL语言的分类 1.数据查询语言(DQL)- select语句,查询数据 2.数据操纵语言( ...

  7. 《Oracle从入门到精通》读书笔记第四章 SQL语言基础之二

    4.7 事务处理 4.7.1 事务概述 事务的4种属性:acid (1)原子性(atomic):事务是一个整体的工作单元,要么全部执行,要么全部取消. (2)一致性(consistency):所有的数 ...

  8. 【Python自然语言处理】读书笔记:第一章:语言处理与Python

    原书:<Python自然语言处理>:https://usyiyi.github.io/nlp-py-2e-zh/ 语言处理与Python 原文:https://usyiyi.github. ...

  9. 量子计算与量子信息读书笔记——第1章简介与概述(上)

    简介与概述 研究对象:使用量子力学系统能够完成的信息处理任务 基本概念涉及领域:量子力学.计算机科学.信息论和密码体系 历史背景 物理学 危机:经典物理学做出荒谬的预言 解决:量子力学理论创立 量子力 ...

  10. 《Java编程思想》读书笔记 第十三章 字符串

    <Java编程思想>读书笔记 第十三章 字符串 不可变String String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修 ...

最新文章

  1. 如何取回服务器上的文件网页设计,毕业设计(论文)-基于内容中心网络开发平台的文件分享精选.docx...
  2. python基础入门:内置函数之排列组合函数教程
  3. linux socket bind 内核详解,Socket与系统调用深度分析(示例代码)
  4. 接口测试--测试工具apipost脚本大全
  5. 编写一个文件目录常用操作的类
  6. 【mac】Snagit截图时候鼠标变大太大的解决方法
  7. POJ 2709 Painter 【贪心算法】
  8. 如何使用大数据算法改善有效链接
  9. input输入格式转换插件-Vanilla Masker
  10. 一文带你彻底理解Linux的各种终端类型及概念
  11. 使用Emit的时候类型XXX尚未完成
  12. 小学信息技术了解计算机课件,小学信息技术《走进计算机》ppt课件
  13. Vue设置页面的title
  14. md 文件编辑 Markdown 使用教程
  15. 普洛斯库列科夫 线性代数习题集_转载)科大学长对数学系学弟学妹的忠告
  16. Excel常用的功能
  17. social-engineer-toolkit搭建-网站克隆钓鱼
  18. DeepLog:基于系统日志使用深度学习方法做异常检测和诊断
  19. 并发之Striped64(l累加器)
  20. 浅谈对transforms.ToTensor()和transforms.Normalize()函数的理解

热门文章

  1. 啊哈哈哈哈 C#按日期生成文件夹,并在文件夹中写入文件
  2. Python爬虫案例:批量下载超清画质手机壁纸
  3. notepad html5 mac,用notepad++将DPL格式转为通用格式
  4. 【备战2020】高考数学全套知识点
  5. 张孝祥java面试大全
  6. 远程智能化灌溉系统 解决方案
  7. 连续型Hopfield神经网络(SHNN)结构和特点及其能量函数
  8. 括号匹配(动态规划)
  9. SQL数据库基础知识巩固
  10. 用例图之参与者、用例间的四种关系(超详细)