C Primer Plus(第六版):C语言概述
1.简单C语言示例
2.示例解释
快速概要
程序细节
3.简单程序的结构
4.提高程序可读性的技巧
5.进一步使用C
程序说明
多条声明
乘法
打印多个值
6.多个函数
7小结
1.简单C语言示例
#include<stdio.h> /*引入头文件*/
int main(void) /*一个简单的C程序*/
{int num; /*定义个名字叫做num的变量*/num = 0; /*给num赋一个值*/printf("Hello World!\n"); /*调用printf()函数*/printf("The first number is %d", num);return 0;
}
2.示例解释
快速概要:
#include<stdio.h>
包含stdio.h文件,这是C编译软件包的标准部分,提供键盘输入和屏幕输出,该代码必不可少!!!
int main(void)
圆括号表明main()是一个函数名
int表明main()函数返回一个整数
viod表明main()不带任何参数
C程序规定一个程序中有一个或多个函数,他们是C程序的基本模块,但必须有且只有一个main()函数,因为C程序的执行将从main函数开始,
到main函数结束而停止
//单行注释
/*多行注释*/
{函数定义开始
int num;
声明一个整型变量num
num = 0;
把0赋给名为num的变量
printf("Hello World!\n");
调用一个printf()函数,将括号内的内容打印出来
printf("The first number is %d", num);
把num的值1内嵌在用双引号括起来的内容中一并打印,%d表示在%d的位置上以数字的形式输出num的值
return 0;
结束main()函数的要求,一般必不可少!!!
}
表示函数定义结束
程序细节:
- 1.include指令和头文件
#include <stdio.h>
这是程序的第一行,它的作用相当于把stdio.h文件中的所 有内容都输入该行所在的位置。
#include <stdio.h>是一条C预处理器指令。通 常,C编译器在编译前会对源代码做一些准备工作,即预处理 。
所有的C编译器软件包都提供stdio.h文件。该文件中包含了供编译器使 用的输入和输出函数(如:printf())信息。该文件名的含义是标准输入/输出头文件。通常,在C程序顶部的信息集合被称为头文件(header),简而言之,头文 件帮助编译器把你的程序正确地组合在一起。
所以,总结一句话:第一行#include <stdio.h>
必不可少!!!
- 2.main()函数
int main(void)
C程序一定从main()函数开始执行(目前 不必考虑例外的情况),除了main()函数,你可以任意命名其他函数。
main()函数必须是开始的函数!!!
int 是整型
void是表示不加任何参数
所以,总结一句话:main()
函数必不可少!!!
- 3.注释
这里就不详细介绍了
//单行注释
/*
多行注释
*/
4.花括号、函数体和块
这里也不详细介绍了,和Python的差不多,函数所必备~
注:只有花括号{ }能起这种作用,圆括号( )和方括号[ ]都不行5.声明
int num;
也就是声明变量,但是值得注意的是,C语言的声明变量的同时必须也声明它的变量类型(如整数、字符和浮点数。把变量声明 为整型、浮点型或字符类型,计算机才能正确地储存、读取和解释数据,否则就是错误的代码)。
变量名:可以用小写字母、大写字母、数字和下划线来命名。而且,名称 的第1个字符必须是字符或下划线,不能是数字或非字符或下划线(这里简单列举几个非字符或下划线的!、@、#、$、%、^、&、*、(、)、+、=等等)。
注:C语言的名称区分大小写。
注:如果要声明变量,应该声明在何处?前面提到过,C99之前的标准要求 把声明都置于块的顶部,这样规定的好处是:把声明放在一起更容易理解程 序的用途。C99 允许在需要时才声明变量,这样做的好处是:在给变量赋值 之前声明变量,就不会忘记给变量赋值。但是实际上,许多编译器都还不支 持C99(现在大部分都支持啦)。
- 6.赋值
num = 0;
这个也不具体介绍啦~
- 7.printf()函数
printf("The first number is %d\n", num);
这里我也不多做介绍,和Python里的print()差不多
\n:换行
参数中的%d被数字0代替了,而0就是变量num的值。这里的%d相当于是一个占位符。
%提醒 程序,要在该处打印一个变量,d表明把变量作为十进制整数打印。
printf()函数名中的f提醒用户,这是一种格式化打印函数。printf()函数有多种打印 变量的格式,包括小数和十六进制整数。
- 8.return语句
return 0;
int main(void)中的int表明 main()函数应返回一个整数。C标准要求main()这样做。有返回值的C函数要 有return语句。该语句以return关键字开始,后面是待返回的值,并以分号结尾。如果遗漏 main()函数中的 return 语句,程序在运行至最外面的右花括号(})时会返回0。因此,可以省略main()函数末尾的return语句。但是,不要在其他有返回值的函数中漏掉它。
最后,强烈建议读者养成在 main()函数中 保留 return 语句的好习惯。在这种情况下,可将其看作是统一代码风格。但对于某些操作系统(包括Linux和UNIX),return语句有实际的用途。
3.简单程序的结构
程序由一个或多个函数组成,必须有 main()函数。函数由函数头和函数体组 成。函数头包括函数名、传入该函数的信息类型和函数的返回类型。通过函 数名后的圆括号可识别出函数,圆括号里可能为空,可能有参数。函数体被花括号括起来,由一系列语句、声明组成,如下图所示。前面的示例中,有一条声明,声明了程序使用的变量名和类型。然后是一条赋值表达式语句,变量被赋给一个值。接下来是2条printf()语句,调用printf()函数2次。 最后,main()以return语句结束。
简而言之,一个简单的C程序的格式如下:
#include <stdio.h>
int main(void)
{语句
return 0;
}
(大部分语句都以分号结尾)
4.提高程序可读性的技巧
不具体介绍了,请看下图:
5.进一步使用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 fathoms!\n", feet, fathoms);
printf("Yes, I said %d feet!\n", 6 * fathoms);
return 0;
}
程序说明:
程序在开始处有一条注释,给出了文件名和程序的目的。写这种程序说明,很简单、不费时,而且在以后浏览或打印程序时很有帮助。
多条声明
接下来,程序在一条声明中声明了两个变量,而不是一个变量。为此, 要在声明中用逗号隔开两个变量(feet和fathoms)也就是说
int feet,fathoms;
和
int feet;
int fathoms;
等价
乘法
不具体介绍了
打印多个值
结果:
There are 12 feet in 2 fathoms!
Yes, I said 12 feet!
程序的第1个printf()中进行了两次替换。双引号号后面的第1个变量 feet替换了双引号中的第1个%d;双引号号后面的第2个变量fathoms替换了双引号中的第2个%d。
注意,待输出的变量列于双引号的后面。还要注意,变量之间要用逗号隔开。
第2个printf()函数说明待打印的值不一定是变量,只要可求值得出合适 类型值的项即可,如6 *fathoms。
注:这里的代码只是把英寻转换成英寸程序的核心部分。
6.多个函数
//* two_func.c -- 一个文件中包含两个函数 */
#include <stdio.h>
void butler(void); /* ANSI/ISO C函数原型 */
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");
}
输出如下:
I will summon the butler function.
You rang, sir?
Yes.Bring me some tea and writeable DVDs.
butler()函数在程序中出现了3次。第1次是函数原型,告知编译器在程序中要使用该函数;第2次以函数调用的形式出现在 main()中;最后一次出现在函数定义中,函数定义即是函数本身的源代码。下面逐一分析:
C90标准新增了函数原型,旧式的编译器可能无法识别(稍后我们将介绍,如果使用这种编译器应该怎么做)。函数原型是一种声明形式,告知编译器正在使用某函数,因此函数原型也被称为函数声明。函数原型还指明了函数的属性。例如,butler()函数原型中的 第1个void表明,butler()函数没有返回值(通常,被调函数会向主调函数返回一个值,但是bulter()函数没有)。第2个void(butler(void)中的 void)的意思是 butler()函数不带参数。因此,当编译器运行至此,会检查butler()是否使用得当。注意,void在这里的意思是“空的”,而不是“无效”。
早期的C语言支持一种更简单的函数声明,只需指定返回类型,不用描述参数:void butler();
早期的C代码中的函数声明就类似上面这样,不是现在的函数原型。 C90、C99 和C11 标准都承认旧版本的形式,但是也表明了会逐渐淘汰这种过时的写法。如果要使用以前写的C代码,就需要把旧式声明转换成函数原型。
接下来我们继续分析程序。在main()中调用 butler()很简单,写出函数名和圆括号即可。当butler()执行完毕后,程序会继续执行main()中的下一条语句。
程序的最后部分是butler()函数的定义,其形式和main()相同,都包含函数头和用花括号括起来的函数体。函数头重述了函数原型的信息:bulter()不带任何参数,且没有返回值。如果使用老式编译器,请去掉圆括号中的 void。
这里要注意,何时执行 butler()函数取决于它在 main()中被调用的位置,而不是butler()的定义在文件中的位置。例如,把butler()函数的定义放在main()定义之前,不会改变程序的执行顺序, butler()函数仍然在两次printf()调用之间被调用。记住,无论main()在程序文件处于什么位置,所有的C程序都从main()开始执行。但是,C的惯例是把main()放在开头,因为它提供了程序的基本框架。
就像下面的代码一样,它最后的输出值和上面的输出值一模一样:
注意又两行一样的void butler(void),有分号的是函数模型(通俗来说就是声明函数模型),没有分号的是定义函数。虽然声明函数模型没有也能成功,但我们还是要按标准做事!!!
#include <stdio.h>
void butler(void); /* ANSI/ISO C函数原型 */
void butler(void) /* 函数定义开始 */
{printf("You rang, sir?\n");
}
int main(void)
{printf("I will summon the butler function.\n");butler();printf("Yes. Bring me some tea and writeable DVDs.\n");return 0;
}
C标准建议,要为程序中用到的所有函数提供函数原型。标准include文 件(包含文件)为标准库函数提供了函数原型。例如,在C标准中,stdio.h文件包含了printf()的函数原型。
7.小结
C程序由一个或多个C函数组成。每个C程序必须包含一个main()函数, 这是C程序要调用的第1个函数。简单的函数由函数头和后面的一对花括号组成,花括号中是由声明、语句组成的函数体。
在C语言中,大部分语句都以分号结尾。声明为变量创建变量名和标识 该变量中储存的数据类型。变量名是一种标识符。赋值表达式语句把值赋给变量,或者更一般地说,把值赋给存储空间。函数表达式语句用于调用指定的已命名函数。调用函数执行完毕后,程序会返回到函数调用后面的语句继续执行。
printf()函数用于输出想要表达的内容和变量的值。
最后,关键字是C语言的词汇。
C Primer Plus(第六版):C语言概述相关推荐
- 深夜里学妹竟然问我会不会C?我直接把这篇文章甩她脸上(C Primer Plus 第六版基础整合)
C Primer Plus 第六版 前言 第一章 初识C语言 一.C语言的起源 二.C语言的应用 三.C语言的特点 四.编译的过程 五.编码机制 1.简述 2.完成机制 六.在UNIX系统上使用C 七 ...
- C++ Primer Plus第六版第六章编程练习 第4题, 加入Benevolent Order of Programmer后,在BOP大会上
/*************************************************************************************************** ...
- C++ Primer Plus 第六版 所有章节课后编程练习答案
我的独立博客地址:www.blog4jimmy.com,欢迎大家关注 下面的是C++ Primer Plus 第六版所有章节的课后编程练习的答案,都是博主自己写的,有不对的地方请大家留言指出讨论讨论 ...
- C Primer Plus第六版(中文版)编程练习答案(完美修订版)汇总
//本文是博主编写的C Primer Plus第六版(中文版)编程练习答案的所有链接; //使用超链接汇总于此,若是有用请点赞收藏并分享给他人; C Primer Plus 第六版(中文版)第二章(完 ...
- C primer plus(第六版)第十一章源代码
C primer plus(第六版)第十一章源代码 /* 11.1 */ #include<stdio.h> #define MSG "I am a symbolic strin ...
- c语言编译器能不能找出逻辑错误,《C Primer Plus》- 第二章 C语言概述
本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...
- C Primer Plus 第02章 C语言概述 学习笔记及复习题、编程题解答
第二章 C语言概述 1. 解析第一个C程序 一个基本的程序结构包含如下部分: #include<stdio.h> // 包含另一个文件,C编译器软件包的标准部分,提供键盘输入和屏幕输出的支 ...
- 《C Primer Plus》第二章——C语言概述(程序示例与解释,提高程序可读性,函数的定义与使用,调试,关键字,复习题与编程练习)
文章目录 第二章-C语言概述 本章内容 简单的C程序示例 示例解释 快速概要 程序细节 简单程序的结构 提高程序可读性的技巧 进一步使用C 多个函数 调试程序 语法错误 语义错误 程序状态 关键字和保 ...
- c语言第六版第四章答案,C primer plus 第六版 第6版 004章 第四章 编程 练习 答案 中文...
第四章 编程练习 1.编写一个程序,提示用户输入名和姓,然后以『名,姓』的格式打印出来. char name[40]; char family[40]; printf("请输入名和姓:\n& ...
最新文章
- 如何向学妹解释在地址栏中输入网址后发生了什么?
- python web-Web开发
- 全文检索引擎Solr系列——Solr核心概念、配置文件
- 分析解决Java运行时异常
- springboot中使用规则引擎Drools
- VTK:图像拉普拉斯算子用法实战
- python发送邮件-实操记录-发送一封普通的邮箱
- mysql ubuntu 注意点
- android 查找所有dialog_android 布局文件layout分组的简单使用
- 网易游戏回应裁员 10%;字节跳动秘密研发手机;iOS 13 beta 5 发布 | 极客头条
- 告别复杂WCF扩展 REST过程 ,让他 so easy
- python基本代码教程-Python基础
- Logistic回归及梯度上升算法
- AR标记时虚实融合投影仪和相机的手动标定
- ubuntu安装vasp_VASP 软件在ubuntu10.04下的安装过程
- 汽车半导体器件AECQ认证测试及相关标准和表格文件
- 实验六 接口、继承和多态
- Qt QLabel详解
- 转载ios开发如何使用Xcode的Targets来管理开发和生产版本的构建
- pta 循环——首字母大写