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语言的词汇。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1stPeak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值