c语言软件哪个好用 c语言入门自学软件推荐

一个C程序可以由几个源程序文件组成,每个源文件可以由几个函数、预处理命令和全局变量声明部分组成,每个函数由函数头和函数体组成。C程序的结构如图所示。作为一个程序开发人

本文最后更新时间:  2023-03-25 03:18:44

一个C程序可以由几个源程序文件组成,每个源文件可以由几个函数、预处理命令和全局变量声明部分组成,每个函数由函数头和函数体组成。C程序的结构如图所示。

作为一个程序开发人员,不可能每次都是从底层开发。例如,在上面的例子中,要向输出设备输入一个字符串,我们需要做的就是调用printf()函数。至于”你好C!“我们不关心它是如何显示的。我们知道printf()函数,写程序的时候调用它,我们需要让程序知道,这样我们就可以使用printf()函数提供的函数,这就需要使用# include<>

c提供了一组丰富的函数,我们称之为标准函数库。标准函数库包括15个头文件,可以完成不同的功能。

比如有# include<>

2.2.2函数声明

标准语言C引入了一种新的更好的函数声明方法,即使用函数原型来指定关于函数的更多信息。通过函数原型,可以告知编译器系统函数的名称和类型,以及形参的个数、类型和顺序,以便在调用函数时,系统进行检查。

函数声明由函数返回类型、函数名和参数列表组成。参数列表必须包括参数类型,但没有必要命名参数。这三个元素称为函数原型,描述了函数的接口。定义函数的程序员提供函数原型,使用函数的程序员只需要编辑函数原型。

函数声明的一般形式是:

返回函数类型函数名(参数类型1,参数类型2,……);

函数声明包括函数的返回类型和函数名。让我们看看下面的例子。

01 int fun (int a, int b);02 void display();03 float fn (float x);

其中,int、void、float都是函数返回类型,也属于数据类型。Fun、display、fn称为函数名。即fun()函数返回的数据类型为integer intdisplay()函数返回的类型是void,表示该函数没有返回值;fn()返回的数据类型是浮点float。

数fun (int a,int b)中的a和b是形参,它们的形参类型都是int类型。fn (float x)函数的内部参数x的类型是float。函数声明中的参数名经常被忽略。如果在声明中提供了参数的名称,则它仅用作辅助文档。还要注意,函数声明是语句,后面是分号!

要进一步说明功能,要注意以下几点。

(1)函数名后面必须有括号,不能省略。这是函数的特性。

(2)函数末尾必须有分号,不能省略。

(3)字符串末尾有这样的东西”n & # 8221叫做转义符,意思是把光标移到下一行的开头,也就是回车换行。因为我们不能通过键盘直接输入换行符指令,所以需要使用转义符;比如输出内容后想回到行首重新输出内容,而键盘上没有对应的功能键,我们可以使用回车转义符”r & # 8221来代替。当然,escape还包含其他内容,这将在下一节详细讨论。

2.2.3变量声明

在大多数语言中,变量必须在使用前声明,C语言也是如此。那么,变量的声明是什么呢?有什么效果?变量声明实际上是在程序运行之前,告诉编译器程序使用的变量以及与这些变量相关的属性,包括变量的名称、类型和长度。这样,在程序运行之前,编译器就可以知道如何给变量分配内存空,优化程序。

的变量声明语句如下:

类型名称变量名

变量声明包括两部分:变量类型名和变量名。请看下面的例子:

01 int num02 double area03 char ppt

其中int、double、char为变量类型名,num、area、ppt为变量名。其实变量类型名也是一种数据类型,也就是说变量num是int类型,area是double类型,ppt是char类型。

变量名是C语言的数据类型,也是用户自定义的数据类型。c自带的数据类型有整数、字符、浮点、枚举、指针。

变量名实际上是一个标识符。当然,标识符的命名规则在这里也适用。此外,在给变量命名时,需要注意以下几点。

(1)变量名区分大小写,变量num和Num是两个不同的变量。

(2)变量的命名要联系实际应用,例如:num一般表示数量,area表示面积等。

(3)变量在使用前必须命名。

给个提示

如果直接使用变量而没有声明,编译器将报告一个错误。

使用下面的示例验证声明必须在变量Use之前。

[例2-2]验证未声明的标识符不可用。

(1)在Visual C++ 6.0中,创建一个名为”undeclaredvar.c & # 8221[文本文件]文件。

(2)在编辑窗口中输入以下代码(代码2-2.txt)。

01 #include<stdio.h>02 int main(void)03{04 print ("output undeclaredvar num-%dn",num);05 return 0:06}

[操作结果]

编译后,将显示一个错误,包含以下信息:

undeclaredvar.c(4): error C2065: ‘num': undeclared identifier

【例题解析】本例中直接引用了标识符num,没有声明。编译器不知道num是什么,所以调试时编译器会报错。

[拓展训练]

在第三句和第四句之间插入陈述:

04 int num=10;

或者:

04 int num;05 num=10;

检查程序是否可以运行,是否仍然出错。

2.3主要功能

每个C程序都必须有且只能有一个main函数,即main()函数,它是程序的入口。main()函数有时被用作一种驱动程序,它按顺序控制其他函数的调用。C程序由函数组成,使程序易于实现模块化。”main()函数()”不能省略,表示函数的参数列表;“{“还有”}”是函数开始和结束的符号,不能省略。

下图说明了调用其他函数的主函数。

主函数main()可以放在程序的任何地方,但是编译器会先找到它,然后从它开始运行。它就像汽车的发动机,控制着程序各部分的执行顺序。下图说明了主函数各部分的名称。

前两个例子中,主函数main()的大写是int类型,int是整数字的缩写,表示返回给系统的数据类型是整数数据,返回值为0,体现在返回语句中。

2.4功能定义区

c语言编译系统是自顶向下编译的。一般被调用的函数放在主调优函数后面的时候,前面应该有一个语句,否则C语言自顶向下的编译系统是不会识别的。就像变量在使用前必须声明一样,函数在调用前也必须声明,否则无法调用!函数的声明可以从定义中分离出来。需要注意的是,一个函数只能定义一次,但是可以声明多次。

函数定义:

返回类型函数名称(参数类型1参数名称1,…参数类型n参数名称n)

{函数体...}例如int fun(int a,int b){int c;c=a+b;return c;}

在程序中,如果main()函数在前,函数声明必须用mian()编写;如果函数在main()前面,就不能在main()中写函数声明!

我们来看一个函数声明和函数定义的综合例子,比较一下它们的区别。

#include<stdio.h>int add(int x,int y);//函数声明语句Main(){int a,b,c;c=add(a,b);printf("%d",c);}Int add(int x,int y)//函数定义{int z;z=x+y;return z;}

2.5冲程

读者可能已经注意到,许多语句后面都有”/*”还有”*/”符号,它们是什么意思?

如上所述,在编辑代码的过程中,需要添加一些说明性的词语来表达代码的含义。

我花了很多精力,绞尽脑汁写代码。如果没有评论或者评论不够清晰,一年后我想用这段代码的时候,已经记不清当年的所有想法了。无奈之下,我只好重新分析,重新理解。请问,因为当初的懒惰造成今天的结局,值得吗?比如一个小组一起开发一个程序,其他人需要重新开发这个小组写的代码。如果代码复杂,没有评论,恐怕只能用四个字来形容群成员此时的心情:欲哭无泪。所以写代码的时候最好写注释,有利无弊。

对注释的要求如下。

(1)使用”/*”还有”*/”表示注释的开始和结束,注释的内容写在这两个符号之间,注释表示一个语句的描述,不属于程序代码的范畴,如[例1-1]和[例2-1]代码”/*”还有”*/”内容之间。

(2) “/”还有”*”它们之间没有空空格。

(3)注释可以是单行的,也可以是多行的,注释不允许嵌套,这样会造成错误,比如:

/*这样的评论/*特别*/有用*/

节目中的这个评论不仅不会起到解释的作用,反而会让节目产生一种错觉,因为“这个”先于它。

”/*””*/”匹配,评论结束,还有“有用*/”编译器认为它是违反语法规则的代码。

2.6守则规则

从代码清晰、易于阅读、理解和维护的角度出发,编写程序时应遵循以下规则。

(1)解释或陈述占一行。我们把空大小写、制表符、换行符等等统称为空白字符。除了字符串、函数名和关键字,C忽略所有空白色字符。当它们出现在其他地方时,它们只是作为间隔,编译器会忽略它们。因此,程序中是否使用空白字符对程序的编译没有影响,但在程序中适当的地方使用空白字符可以增加程序的清晰度和可读性。

例如,下面的代码:

intmain(){printf( "Hello C!n”);}/*这样的写法也能运行,但是太乱,很不妥*/

(2)使用“{ “还有”}”封闭部分通常代表程序的某一层的结构。”{“和“} ”通常,它与结构语句的第一个字母对齐,并占据一个单独的行。

例如,下面的代码:

int main(){printf( "Hello C!n");return 0;}/*这样的写法也能运行,但是阅读起来比较费事*/

(3)较低级别的语句通常比较高级别的语句在留下缩进之后被写入。一般来说,缩进是指空有两个空单元格或一个tab的地方的白色位置。

例如,下面的代码:

int main(){print( "Hello C!n" );{printf( "Hello C!n" );}return 0;}

(3)在程序中写注释,说明程序做了什么,也可以增加程序的清晰度和可读性。

(4)以上介绍的四条规则,编程中每个人都应该遵守,养成良好的编程习惯。

2.7主点击

正如变量可以在头文件中声明,在源文件中定义一样,函数也可以在头文件中声明,在源文件中定义。把函数声明直接放在每一个使用这个函数的源文件里,是大多数新手习惯和喜欢的方式,这是合法的。但是这种方式比较老套,容易出错。解决方法是将函数的声明放在头文件中,这样可以保证指定函数的所有声明都是一致的。如果函数接口改变了,你只需要修改它的唯一声明。

通过在定义函数的源文件中包含提供函数声明的头文件,编译器可以检查函数的定义和声明是否一致。特别是,如果函数定义和函数声明的参数列表一致,但返回类型不一致,编译器将发出警告或错误消息来指出差异。

那么学习了函数声明和函数定义之后,两者有什么区别呢?我们知道,函数的定义是一个完整的函数单元,它包括函数类型、函数名、参数和参数类型、函数体等。而且在一个程序中,一个函数的定义只能有一次,函数头和花括号之间没有多余的符号。函数声明只说明被定义函数的返回值类型,以告知系统这个函数调用的是什么类型的函数。它不包含函数体,如果多次调用函数,应该在每个音调函数中声明。函数声明是解释性的句子,必须以分号结尾!

学习完本次讲座的内容,读者对C语言的理解是否有所提高?下面我们来看看使用函数时需要注意的一些问题。

1.函数声明可以省略参数名,但是函数定义的头必须写出所有的参数名,并给出它们对应的数据类型。

2.函数原型的主要目的是声明函数的返回值类型以及函数期望接受的参数的个数、类型和顺序。

3.如果程序中没有某个函数的函数原型(没有描述),编译系统会用这个第一次出现的函数(函数定义或者函数调用)来构造函数原型。

4.默认情况下,编译系统的默认函数返回值是int。

写函数常见错误:当被调用的函数与函数原型不匹配时,程序会提示语法错误,当函数原型与函数定义不一致时,也会产生错误。

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。