C Prime Plus 第二章 C语言概述
简单的C语言程序示例
//2.1 first.c
#include <stdio.h> //预处理指令(#define 也是预处理指令)
int main(void) //main()总是第一个被调用的函数
{ //函数体开始int num; //声明num = 1; //赋值printf("I am a simple"); //调用printf()函数printf("computer.\n"); // \n 指的是换行printf("My favourite number is %d because it is first.\n", num); //%d 是输出十进制的数字return 0; //return 语句
} //结束
程序细节
1.#include 指令和头文件
#include <stdio.h>
作用:相当于把stdio.h文件中的所有内容都输入到该行所在的位置
#include这行代码是一条C预处理器指令。通常,C编译器在编译前会对源代码做一些准备工作,即预处理。
stdio.h :标准输入输出头文件
通常,在C程序顶部的信息集合被称为头文件,头文件帮助编译器把你的程序正确地组合在一起。
2.main()函数
int main(void)
C程序一定从main()函数开始执行(不考虑例外),int 是main()函数的返回类型
3.注释
/**/存在潜在问题,不能嵌套
//注释单行
4.花括号、函数体和块
所有的C函数都使用花括号标记函数体的开始和结束
花括号还可用于把函数中的多条语句合并为一个单元或块
5.声明
int num;
声明完成了两件事
1.在函数中有一个名为num的变量
2.int表明num是一个整数
int是一种数据类型,编译器使用这些信息为num变量在内存中分配存储空间
int是C语言的一个关键字,表示一种基本的C语言数据类型。
num是一个标识符,也就一个变量、函数或其他实体的名称
声明把特定标识符与计算机内存中的特定位置联系起来,同时也确定了储存在某位置的信息类型或数据类型
数据类型
C 语言可以处理多种类型的数据,把变量声明为整型或字符类型,计算机才能正确地储存、读取和解释数据
命名
给变量命名时要使用有意义的变量名或标识符,如果变量名无法清楚地表达自身的用途,可在注释中进一步说明
可以用小写字母、大写字母、数字和下划线(_)来命名。而且,名称的第1个字符必须是字符或下划线,不能是数字
操作系统和C库经常使用以一个或两个下划线字符开始的标识符,因此最好避免在自己的程序中使用这种名称
声明变量的4个理由
1.把所有的变量放在一处,方便读者查找和理解程序的用途。如果变量名无法表述清楚,在注释中解释变量的含义。这种方法让程序的可读性更高。
2.声明变量会促使你在编写程序之前做一些计划
3.声明变量有助于发现隐藏在程序中的小错误,如变量名拼写错误,如数字1和字母l
4.如果事先未声明变量,C程序将无法通过编译
6.赋值
num = 1;
声明时,编译器在计算机内存中为变量num预留了空间,然后在执行这行赋值表达式语句时,把值储存在之前预留的位置
可以给num赋不同的值,这就是num之所以被称为变量的原因
该赋值表达式语句从右侧把值赋到左侧
7.printf()函数
printf("I am a simple");
printf("computer.\n");
printf("My favourite number is %d because it is first.\n", num);
圆括号表明printf是一个函数名,圆括号中的内容是从main()函数传递给printf()函数的信息
第1行的I am a simple是函数的实际参数。
调用函数, 只需输入函数名,把所需的参数填入圆括号即可。当程序运行到这一行时,控制权被转给已命名的函数,函数执行结束后,控制权被返回至主调函数。
第2行的\n代表一个换行符,打印换行符的效果与按下Enter 键相同,但如果直接按下Enter键,编辑器会退出当前行并开始新的一行,而换行符仅会影响程序输出的显示格式。
第3行的%d相当于是一个占位符,其作用是指明输出num值的位置,%提醒程序,d表明把变量作为十进制整数打印
printf()函数名中的 f 提醒用户,这是一种格式化打印函数
8.return 语句
return 0;
int main(void)中的int 表明main()函数应返回一个整数,有返回值的函数要有return语句,该语句以return 关键字开始,后面是待返回的值,并以分号结尾
简单程序的结构
程序由一个或多个函数组成,必须有main()函数。函数由函数头和函数体组成。函数头包括函数名、传入该函数的信息类型和函数的返回类型。通过函数名后的圆括号可识别出函数,圆括号里可能为空,可能有参数。函数体被花括号括起来,由一系列语句、声明组成。
提高程序可读性的技巧
选择有意义的函数名和写注释
如果变量名是width,就不必写注释说明该变量表示宽度,但是如果变量名是video_routine_4,就要解释一下该变量名的含义。
在函数中用空行分隔概念上的多个部分。
每条语句各占一行。
进一步使用C
//fathm_ft.c--把2音寻转换成英寸
#include <stdio.h>
int main(void)
{int feet, fathoms;fathoms = 2;feet = 6 * fathoms;printf("There are %d feet in %d fathmos!\n", feet, fathoms);printf("Yes, I said %d feet!\n", 6 * fathoms);return 0;
}
多个函数
//two_func.c 一个文件中包含两个函数
#include <stdio.h>
void butler(void);//ANSI/ISO函数原型
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次,
第一次是函数原型,告知编译器在程序中要使用该函数,函数原型指明了函数的属性。butler()函数的第一个void表明butler()函数没有返回值,第二个void表明butler()函数不带参数。
第二次是函数调用,在main()函数中调用butler()很简单,写出函数名和圆括号即可。
第三次是函数定义,其形式和main()函数相同,都包含函数头和用花括号括起来的函数体。
调试程序
//nogood.c 有错误的程序
#include <stdio.h>
int main(void)
{int n, n2, n3;//该程序有一个语义错误n = 5; n2 = n * n;n3 = n2 * n2;printf("n = %d,n squared = %d,n cubed = %d\n", n, n2, n3);return 0;
}
n3得到的值是n的四次方,但 n cubed 表示的是n的立方,语义错误
关键字和保留标识符
关键字不能用做标识符(如,变量名)
对于保留标识符,C语言已经指定了他们的用途或保留他们的使用权,不能随便使用。
编程练习
#include <stdio.h>
int main(void)
{printf("Gustav Mahler\n");printf("Gustav \nMahler\n");printf("Gustav ");printf("Mahler\n");return 0;
}
#include <stdio.h>
int main(void)
{int age = 20;printf("age: %d\n", age);printf("days: %d\n", age * 365);return 0;
}
#include <stdio.h>
void jolly(void);
void deny(void);
int main(void)
{jolly();jolly();jolly();deny();return 0;
}
void jolly(void)
{printf("For he's a jolly good fellow!\n");
}
void deny(void)
{printf("Which nobody can deny!\n");
}
#include <stdio.h>
void br(void);
void ci(void);
int main(void)
{br();printf(",");ic();printf("\n");ic();printf(",");printf("\n");br();return 0;
}
void br(void)
{printf("Brazil, Russia");
}
void ic(void)
{printf("India, China");
}
#include <stdio.h>
int main(void)
{int toes = 10;printf("toes: %d\n", toes);printf("toes squared: %d\n", toes * toes);printf("double toes : %d\n", toes * 2);return 0;
}
#include <stdio.h>
void smile(void);
int main(void)
{smile();smile();smile();printf("\n");smile();smile();printf("\n");smile();return 0;
}
void smile(void)
{printf("Smile!");
}
#include <stdio.h>
void one_three(void);
void two(void);
int main(void)
{printf("starting now:\n");one_three();printf("done!\n");return 0;
}
void one_three(void)
{printf("one\n");two();printf("three\n");
}
void two(void)
{printf("two\n");
}
读书记录,欢迎指正
C Prime Plus 第二章 C语言概述相关推荐
- 《C Primer Plus》第二章——C语言概述(程序示例与解释,提高程序可读性,函数的定义与使用,调试,关键字,复习题与编程练习)
文章目录 第二章-C语言概述 本章内容 简单的C程序示例 示例解释 快速概要 程序细节 简单程序的结构 提高程序可读性的技巧 进一步使用C 多个函数 调试程序 语法错误 语义错误 程序状态 关键字和保 ...
- c语言编译器能不能找出逻辑错误,《C Primer Plus》- 第二章 C语言概述
本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...
- 【Java基础系列教程】第二章 Java语言概述、配置环境变量
一.计算机编程语言概述 1.1 语言 语言(英文:Language)是人类进行沟通交流的表达方式.例如:中国人与中国人用普通话沟通.而中国人要和英国人交流,就要学习英语. 语 ...
- C Primer Plus 第02章 C语言概述 学习笔记及复习题、编程题解答
第二章 C语言概述 1. 解析第一个C程序 一个基本的程序结构包含如下部分: #include<stdio.h> // 包含另一个文件,C编译器软件包的标准部分,提供键盘输入和屏幕输出的支 ...
- 第1章 Java语言概述
第1章 Java语言概述 声明 0. Java语言应用场景 1. 软件开发介绍 2. 计算机编程语言介绍 3. Java语言概述 4. Java程序运行机制及运行过程 5. Java的环境搭建 5. ...
- c语言i=5.6a=(int)i,第一章C语言概述.ppt
<第一章C语言概述.ppt>由会员分享,可在线阅读,更多相关<第一章C语言概述.ppt(35页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计,课程安排和理论教学:(419 ...
- c语言从键盘输入千米数,第二章 C语言编程基础.ppt
第二章 C语言编程基础 习题2 P51-7.8.13.14.16 2.4.8break 语句和continue语句 [例2.19] 输出100 - 200 之间不能被3整除的数. P44 2.4.9循 ...
- vc 运行c语言步骤,第1章_C语言概述(vc++环境如何运行c语言程序)[精选].ppt
第1章_C语言概述(vc环境如何运行c语言程序)[精选] C语言程序设计 授课对象:电子商务06 时间安排: 理论课(1-9周): 星期一 5-6节 9407D 星期三 5-6节 9410D 实验课( ...
- Web前端开发笔记——第二章 HTML语言 第四节 超链接标签
目录 前言 一.超链接标签 (一)链接其它子网页 (二)链接其它站点 (三)虚拟超链接 二.从当前页面链接到指定位置 三.链接的访问情况 四.在新窗口中打开链接 例题 结语 前言 本节介绍超链接标签即 ...
最新文章
- perl学习之(not install YAML)解决
- python3(六)监督学习
- springboot使用mongodb
- CodeForces 484B Maximum Value
- win10安装Unbuntu的Linux系统的虚拟机02
- linux下oracle imp,oracle中imp命令Linux下使用
- 2014 史丰收速算
- python解析库 爬虫_Python-爬虫-解析库(Beautiful Soup)的使用
- 六度分离(Floyd算法)
- 手机更换证件照背景色只需1分钟,别去打印店花冤枉钱了
- 【YBT2023寒假Day11 B】催眠大师(费用流)
- 施主,贫僧乃东土大唐而来,恳请在此借宿一晚……...
- 如何将本地项目上传到gitee仓库里
- sso单点登录与Jsonp
- (转)程序员成功之路 ——The road ahead for programmer(演讲稿)
- 谷歌浏览器,无需安装
- ssm基于BS架构的校园爱心捐赠与物品交换平台的设计与实现毕业设计源码
- 如何配置java环境变量?
- 【一周头条盘点】中国软件网(2018.12.17~2018.12.21)
- 2022江苏最新建筑八大员(资料员)模拟考试试题及答案解析