c语言

[.toc]

第一章 初识C语言

1.4计算机能做什么

其一,储存在计算机中的所有内容都是数 字。计算机以数字形式储存数字和字符(如,在文本文档中使用的字母)。 每个字符都有一个数字码。计算机载入寄存器的指令也以数字形式储存,指 令集中的每条指令都有一个数字码。

其二,计算机程序最终必须以数字指令 码(即,机器语言)来表示。

1.7 使用C语言的7个步骤

image-20211130195503024

4.编译器是把源代码转换成可执行代码的程序

1.8 编程机制

用C语言编写程序时,编写的内容被储存在文本文件中,该文件被称为 源代码文件(source code file)。大部分C系统,包括之前提到的,都要求文 件名以.c结尾(如,wordcount.c和budget.c)。

1.8.1 目标代码文件、可执行文件和库

C编程的基本策略是,用程序把源代码文件转换为可执行文件(其中包 含可直接运行的机器语言代码)。

典型的C实现通过编译和链接两个步骤来 完成这一过程。编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。

优点:C 使用这种分而治之的方法方便对程序进行模 块化,可以独立编译单独的模块,稍后再用链接器合并已编译的模块。通过这种方式,如果只更改某个模块,不必因此重新编译其他模块。另外,链接器还将你编写的程序和预编译的库代码合并。

中间文件:是最普遍的一种形式,即把源 代码转换为机器语言代码,并把结果放在目标代码文件(或简称目标文件)中(这里假设源代码只有一个文件)。为目标文件中储存的是编译器翻译的源代码,这还不是一个完整的程序。

启动代码:充当着程序和操作系统之间的接口。

链接器:链接器的作用是,把你编写的目标代码、系统的标准启动代码和库代码这 3 部分合并成一个文件,即可执行文件。

image-20211130202827074

目标文件和可执行文件都由机器语言指令组成的。然而,目标文件中只包含编译器为你编写的代码翻译的机器语言代码,可执行文件中还包含你编写的程序中使用的库函数和启动代码的机器代码。

2C语言概述

2.2 示例解释

**image-20211201201137671

2.2.1 第1遍:快速概要

#include <stdio.h> 

int main(void) /* 一个简单的C程序 */

{

int num; /* 定义一个名为num的变量 */

num = 1; /* 为num赋一个值 */

printf("I am a simple "); /* 使用printf()函数 */

printf("computer.\n");

printf("My favorite number is %d because it is first.\n",num);

return 0;

}

2.1 解释

本节简述程序中的每行代码的作用。下一节详细讨论代码的含义。

#include<stdio.h> ←包含另一个文件

该行告诉编译器把stdio.h中的内容包含在当前程序中。stdio.h是C编译器软件包的标准部分,它提供键盘输入和屏幕输出的支持。

int main(void) ←函数名

C程序包含一个或多个函数,它们是C程序的基本模块。程序清单2.1的程序中有一个名为main()的函数。圆括号表明main()是一个函数名。int表明main()函数返回一个整数,void表明main()不带任何参数。这些内容我们稍后详述。现在,只需记住int和void是标准ANSI C定义main()的一部分(如果使

用ANSI C之前的编译器,请省略void;考虑到兼容的问题,请尽量使用较新的C编译器)。

/* 一个简单的C程序 */ ←注释

注释在//两个符号之间,这些注释能提高程序的可读性。注意,注释只是为了帮助读者理解程序,编译器会忽略它们。

{ ←函数体开始

左花括号表示函数定义开始,右花括号(})表示函数定义结束。

int num; ←声明

该声明表明,将使用一个名为num的变量,而且num是int(整数)类型。

num = 1; ←赋值表达式语句

语句num = 1;把值1赋给名为num的变量。

printf("I am a simple "); ←调用一个函数

该语句使用 printf()函数,在屏幕上显示 I am a simple,光标停在同一行。printf()是标准的C库函数。在程序中使用函数叫作调用函数。

printf("computer.\n"); ←调用另一个函数

接下来调用的这个printf()函数在上条语句打印出来的内容后面加上“computer”。代码\n告诉计算机另起一行,即把光标移至下一行。

printf("My favorite number is %d because it is first.\n", num);

最后调用的printf()把num的值(1)内嵌在用双引号括起来的内容中一并打印。%d告诉计算机以何种形式输出num的值,打印在何处。

return 0; ←return语句

C函数可以给调用方提供(或返回)一个数。目前,可暂时把该行看作是结束main()函数的要求。

} ←结束

必须以右花括号表示程序结束。

2.2 printf()函数

\n组合(依次输入这两个字符)代表一个换行符(newline character),打印换行符的效果与在键盘按下Enter键相同。

\t代表Tab键,\b代表Backspace键(退格键)。

看该函数的输出:

My favorite number is 1 because it is first.

对比发现,参数中的%d被数字1代替了,而1就是变量num的值。%d相

当于是一个占位符,其作用是指明输出num值的位置。

2.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)。

程序的第1个printf()中进行了两次替换。双引号号后面的第1个变量(feet)替换了双引号中的第1个%d;双引号号后面的第2个变量(fathoms)替换了双引号中的第2个%d。注意,待输出的变量列于双引号的后面。还要注意,变量之间要用逗号隔开。

2.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) /* 函数定义开始 */

{

prin"You rang, sir?\n");

}

 

 

 

posted @ 2022-02-10 16:07  就花阴  阅读(560)  评论(0)    收藏  举报