您当前的位置:首页 > 互联网教程

10分钟了解C语言基本语法知识

发布时间:2025-05-13 02:12:23    发布人:远客网络

10分钟了解C语言基本语法知识

一、10分钟了解C语言基本语法知识

相信你已经看到了第一个示例代码的效果了。这个程序所实现的效果很简单,就是在屏幕上输出了一行字符"Hello World"。

我们根据这一小段代码,借此了解一些C语言的基础语法知识。

首先,主函数main,一个标准的主函数如下:

main翻译成中文是主要的、最重要的意思,而在C语言里面表示一个主函数。(稍后我们会讨论什么是计算机语言里面的函数,以及主函数在C语言程序中的存在意义。)

双斜杠后面的为注释,打一个比较形象的比喻,注释就类似于老师在作业本上的批注。

一般来说,注释用于标注这段代码的用途或解释思路等。因为注释不会被当做代码进行编译,所以无论添加什么注释内容,都不会对代码的实际运行产生任何影响。

如上代码中,用注释标出了哪里为主函数,哪里是函数的返回值。

我们先谈谈什么是函数?在大家的认知里面,函数是数学领域的一个名词,它可能是如下图所示:

但是,这只是数学领域中的函数,与编程语言中的函数完全不同。

在编程语言里面,你可以把函数看做一个盒子,这个盒子有如下几个特性:

00001.开始执行时,函数可以被输入一些值

00002.执行过程中,函数可以做一些事情

00003.执行完成后,函数可以返回一些值

让我们看看我们的这个主函数,在这3个特性上,分别做了什么。

00002.主函数打印了一行字到屏幕上

其中,int表明了函数的返回值类型,int是integer(整数)的缩写。

main是函数名,main后面的括号()内为输入参数,目前为空。

return后跟函数的返回值,为0。而0是一个整数,和函数名前面的int对应。

函数返回值类型函数名(函数输入参数值)

我们不如趁热打铁,根据上面的函数写法的公式,写一个两个整数加法的函数。这个函数需要做到:输入两个整数,返回他们相加的结果。

这个既然这个函数是用于计算加法的,我们把函数名取名为add。当然自定义函数的函数名可以按照自己的喜好来写,就算写成aaaaa也行。不过,为了函数名拥有语义化,方便人阅读理解,我们一般使用英文来作为函数名。

//这一段代码被称之为add函数的函数定义

好的,那我们写完了一个add函数了。这一段代码被称之为add函数的函数定义。

上面我们已经自己定义好了一个add函数,那我们需要怎样来使用它呢?add函数能直接运行嘛?

所有的C语言代码都有一个起始入口,而这个入口就是主函数main。进入了主函数以后,才能经由主函数来调用其他函数。

这也意味着,每个C语言代码,只能有且只有一个main函数。

我们把代码稍微修改,现在代码如下。

当程序运行时,首先会进入主函数main。接着调用我们刚刚编写的add函数了。我们传了2个值分别是整数2和3给add函数。

函数的定义中规定,传2个参数,我们调用的时候,也必须传2个,并且类型也需要一致,否则编译会报错。

那么自然地,我们会想到,主函数是被谁调用的?主函数的返回值必须是int吗?

主函数在程序开始的时候被自动调用,不需要在程序内主动调用主函数。

而主函数的返回值会返回给调用这个程序的程序。

C语言标准中规定主函数有返回值且必须是int。如果程序正常结束,一般将返回值设置为0。

5.要调用函数,必须先知道函数。

我们再来看看,编译器是怎么理解add这个标识符的。

编译器会从代码开始,按照从上往下的顺序阅读代码。

编译器首先看到了一个函数的定义,描述了一个叫add的函数。接着,在main中需要使用add,由于编译器已经知道了add的定义,因此编译器可以正常编译通过。

但是,如果将函数定义和函数调用反过来呢?

首先,编译器看到了add标识符,编译器会很疑惑,add是什么呢?编译器无法理解add究竟是什么。因此,编译器将报错,并停止编译。

在add函数计算完毕之后,需要有一个东西来接受add返回回来的值。所以,我们在add前面声明了一个int整型的变量。

什么是变量呢?你可以把它看做一个空箱子,里面可以装任何其他的和它类型一致的值。

result只是我们给它起的一个名字,当然,你可以任意起名。比如叫he,叫xiangzi,都可以。

我们把add返回回来的5,装进了result。因此,result里面装着的值是5了。

=等号,在C语言中是赋值运算符,相信你已经发现它有把右边的值装进左边变量的功能了。和函数一样,这里的等号和数学里面的等号,也是有很大不同的,它并不是相等的意思。

赋值运算符,是能将符号右边的值,装进左边的变量的一种运算符。

下图就是add函数接受2,3为输入,返回5,被赋值号=赋值给result的流程了。

那我们能不能这样写呢?去掉int result;这一条。

答案是不行的,变量必须先声明后使用。

编译器看到result标识符,但是从未见过result的定义时,肯定也会疑惑它究竟是个什么类型的变量,甚至它有可能不是变量而是一个函数。这样,编译器只能遗憾得给出一个编译错误的提示,并结束编译了。

你必须像上面这样,声明有一个变量,名字叫result,类型是int。接下来,编辑器就能记下result标识符为一个int类型的变量。在后面的代码中,即可愉快地使用这个result变量了。

那么,像2,3,这种数值,需不需要声明呢?

不需要,他们是常量,无法被更改。并且一旦被写出来,就已经知道它们是整型的常量了。

同样的,字符串字面常量也不需要被声明,例如:"Hello World\n"。被双引号包裹的,我们认为它是一个字符串,以区别于数值。

变量我们可以通过赋值来更改,常量不能更改,所以你不能对它进行赋值。

现在,你应该明白了这段代码的大部分含义了。我们再进一步,把它全部解析完。

和add一样,printf也是一个函数,但是这个并不是一个自定义函数,而是一个系统自带的函数。

我们把字符串字面常量"Hello World\n"传给了printf函数。运行代码时,我们在屏幕上看到了这行字符。显然,printf函数的作用就是将字符串输出到控制台上了。

printf由单词print(打印)和单词format(格式)的首字母f组成,意为格式化打印。

在早期,计算机的输出主要是靠连接打印机将字符打印在纸张上。而如今,计算机的输出大部分都在屏幕上实现。但是print这个词却被保留了下来。有时候我们会沿用打印这种说法,而实际上,我们是在屏幕上的控制台中输出字符。

让我们再次比较两段代码,我们写Hello World时只传了1个参数给printf,但为什么在add函数后却能传2个给它呢?函数定义的参数个数和类型需要和函数调用时候的保持一致吗?

printf是一个很特别的函数,它是一个变参函数,所以可以接受可变数量和类型的输入参数。这里我们无需太过关心怎样写一个可变参数函数,暂时只需要使用它即可。

通过如下示例,我们可以简单了解printf函数的更多用法。

用于打印一个整数:printf("%d",整型);

用于打印两个整数:printf("%d\n%d\n",整型1,整型2);

// \n表示换行,就是从下一行开始再继续打印

printf("A=%d\nB=%d\n", 123, 456);

printf("XXX占位1 XXX占位2 XXX占位3",替换1,替换2,替换3);

printf的第一个参数必须是字符串(被双引号包括)。其中,占位用%类型表示。例如:整型的占位符为%d。后面的替换参数,会依次替换前面的占位。printf是一个变长参数函数,只要第一个字符串参数占位符写对了,后面可以加任意多的替换参数。

printf函数并不是我们定义的函数,而是系统自带的函数。这个函数被写在文件stdio.h中,我们要使用printf就必须先让编译器理解printf。

我们假定printf的函数定义写在文件stdio.h中,用#include命令,可以将文件stdio.h的代码复制到我们的代码中。

TIPS:stdio.h里面并未定义printf函数,但是它里面有printf函数的函数声明。但是,在当前阶段里面,你可以理解为stdio.h里面,写了printf的函数定义。

二、c语言都有哪些内容

C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发.

1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。 2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。

所以很多硬件编程,片上编程语言也选用C语言,比高级语言简洁,比汇编语言易懂。

三、C语言编程

目前最著名、最有影响、应用最广泛的windows、linux和UNIX三个操作系统都是用C语言编写的。0S是计算机系统(由软硬件两个子系统构成)的核心和灵魂,它是软件中最庞大最复杂的系统软件。既然如此庞大复杂的0S都可以用c语言编写,从狭义而言,还有什么系统软件和应用软件不能用c语言编写呢?由此可以肯定的说,c语言是一门十分优秀而又重要的语言。

c语言程序设计是过程性程序设计语言,它的发展贯穿了计算机发展的历程,它蕴含了程序设计的基本思想,囊括了程序设计的基本概念,所以它是理工科高等院校的一门基础课程。

从市面上有关c语言的书籍和高等院校采用的教材来看,它们有一个共性,那就是:脱离了实际应用(全是小打小闹的小例子),纯粹的过程性程序设计,没有软件工程思想的体现,没有一定程序设计风格,仅仅是为了让大家明白什么是c语言而已。

高等院校开设c语言程序设计的目的是让学生对程序设计有个入门,有个直观的理解,同时为其他后续课程作铺垫。但是如果教学仅仅以此为目的,那么教学本身就效果而言是个大大的失败。

大家知道,在商业上讲究唯利是图,“利”是商业追求的目标,离开了“利”经商,则商无动力,其结果是必败无疑。在c语言程序设计教学当中,教师应该把“唯用是图”作为教学的首要目标。如果抛开了实际应用进行程序设计教学,就是纸上谈兵,就是“说明书”式的教学。印度的程序设计课程采用“事件驱动式”教学,我认为在中国的c语言程序设计教学中应该采用“项目驱动式”教学。“项目驱动式”教学就是以项目为目的,以c语言理论教学为过程,最终能用c语言设计项目,实现项目的要求。“项目驱动式”教学的关键在于培养学生“如何做什么”和“可以干什么”。一个项目就是一个工程,在“项目驱动式”教学中,首先应该让学生简单了解什么是软件工程思想,其次在c语言理论教学过程中,让学生懂得面向对象的程序设计的风格,最后引导他们来设计项目。

(二)“项目驱动”式教学应注意的问题

1.c语言程序设计教学要帮助学生树立面向工程的观点

在计算机行业中,软件是通过人们的智力活动、把知识与技术转化成信息的一种产品。软件的设计已经用工程的观念来进行管理。软件设计工作被当作一项系统工程来对待。软件的的生存周期一般可分为以下阶段:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行与维护。我们不难看出软件工程的复杂程度是很大的。理工科高等院校把c语言作为一门基础课程,也是为了给社会培养信息技术人才。众所周知,养成一个好的习惯是非常重要的,所以c语言程序设计作为大多数工科院校学生接触的第一门程序设计语言(有的院校讲pascal),就应该让学生树立正确的观点。那么当前的程序设计教学也必须以切合将来软件工程开发的实际需要为第一目标,使学生在学习程序设计的初级阶段就树立正确的软件工程观点。这样做不仅可以为学生将来从事计算机应用设计打下良好的基础,而且有利于培养学生分析问题的完备性,以及统筹全局,协调关系的基本素质。

2.理论教学应从单一的“结构化程序设计”向“结构化与面向对象并举”转变

“结构化程序设计”方法是程序设计的基础,必须让学生掌握得坚实可靠。结构化程序设计的过程是培养学生思维能力的过程,在教学中经常发现有些学生的思维混乱。这些都是缺乏思维训练的结果。结构化程序设计的训练不仅可以让学生养成良好的程序设计习惯,而且可以有效地培养学生思维的条理性和逻辑性。所以在授课过程中要注意讲解结构化程序设计的思想时应突出两点:(1)程序的质量首先取决于它的结构。(2)程序设计的基本方法是自顶向下地逐步求精和模块化。

在c程序教学过程中,越到后面的章节,学生越会产生设计程序逐渐变难的感觉,这是不符合逻辑的一种怪现象。按照常理,C语言学的越多,说明你的程序设计知识越多,设计起程序来应该更加得心应手,那么出现这种现象的原因何在呢?当然该问题的出现的原因是多方面的,但是其中最重要的一点就是长期以来程序设计的观念不是以如何处理好对象为出发点,而是以如何使用好语言为基本点。受这种思想的影响,我们的程序设计教学大多数不是以如何解决好问题为重点,而是以讲解语法规则和语句格式为重点,是“说明书”式的教学。这样做造成的结果就是见到一个程序后学生首先想到是该用哪条语句,而不是思考怎样合理的解析。要切实解决这个问题,首先应该改变程序设计的观念。“面向对象程序设计”思想是目前最为流行、极为实用的一种程序设计方法,但是让学生直接接触“面向对象程序设计”,肯定不能对程序设计打下牢固的基础。“结构化与面向对象并举”是现代计算机程序设计的发展趋势,应该认真探索研究,让学生有一个较为轻松的学习过程。程序设计的实质就是编写处理对象的过程,所以将c与c++有机的融为一体的教材应该是首选教材,在教学过程中,我们应该从社会发展的角度进行探索研究,将目前最为流行又极为实用“面向对象程序设计”思想融合到c语言教学中。

3.c语言教学应培养学生良好的程序设计风格

具有良好的设计风格应该是程序员所具备的基本素质,在实际的项目中程序员往往都有自己的一些编程风格。目前95%以上的程序设计书籍不注重程序设计风格问题,这导致了很多学生没有良好的程序设计风格,在他们刚刚毕业踏入社会时,如果周围的同事没有良好的编程风格,那么很难通过环境来使自己提高这方面的素质,即使有提高也不容易比较全面的提高。因此在学生接触的第一门程序设计语言教学中,就应该培养学生良好的程序设计风格,使他们一进工作环境就具备这个素质。

Pascal设计者N.Writh教授十分重视程序设计风格的养成,他坚信“教给学生们以表达他们思维的语言会深深地影响他们思维和创造发明的习惯,而正是这些语言本身的混乱直接影响着学生们的程序设计的风格”,他这里所指的“这些运用”是当时那些主要用于程序设计教学的计算机语言。对学生来讲,一开始就强调程序设计风格很有必要,良好的程序设计风格不仅有助于提高程序的可靠性、可理解性、可测试性、可维护性和可重用性,而且也能够促进技术的交流,改善软件的质量。所以培养良好的程序设计风格对于初学者来说非常重要。

程序设计风格,实际上是指的是编码风格。在教学过程中应从源程序文档化,数据说明的原则,输入/输出方法这三个方面培养学生的编码风格,进而从编码原则探讨提高程序的可读性、改善程序质量的方法。

(1)源程序文档化。编码的目的是产生程序,但是为了提高程序的可维护性。源代码是需要实现文档化的。源程序文档化包括选择标识符(变量和标号)的名字、安排注释以及标准的书写格式等。

①选择标识符的命名规则。标识符包括模块名、变量名、常量名、标号名、子程序名等。这些名字应能反映它所代表的实际东西,应有一定实际意义,使其能顾名思义。另外在模块名、变量名、常量名、标号名、子程序名中使用下划线是一种风格。使用这一技术的一种广为人知的命名规则就是匈牙利命名法(变量类型由一个或两个字符表示,并且这些字符将作为变量名的前缀)。当然使用匈牙利命名法与否都没有错误,重要的是要保持一致性——在整个程序中使用相同的命名规则。这就是说,如果你在一个小组环境中编程,你和其他小组成员应该制定一种命名规则。并自始至终使用这种规则。如果有人使用了别的命名规则,那么集成的程序读起来将是很费劲的。此外,你还要与程序中用到的第三方库(如果有的话)所使用的风格保持一致。如果可能的话,你应该尽量使用与第三方库相同的命名规则,这将加强你的程序的可读性和一致性。

②注释。程序中的注释是程序设计者与程序阅读者之间通信的重要手段。注释能够帮助读者理解程序,并为后续测试维护提供明确的指导信息。因此,注释是十分重要的,大多数程序设计语言提供了使用自然语言来写注释的环境,为程序阅读者带来很大的方便。注释分为功能性注释和序言性注释。

a.功能性注释。功能性注释在源程序中,用以描述其后的语句或程序段是在做什么工作,也就是解释下面要“做什么”,而不是解释下面怎么做。对于书写功能性注释,要注意以下几点:第一描述一段程序,而不是每一个语句。第二利用缩进和空行,使程序与注释容易区别。第三注释要准确无误。

b.序言性注释。序言性注释通常位于每个程序模块的开头部分,它给出程序的整体说明,对于理解程序具有引导作用。有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。有关内容包括:程序标题;有关该模块功能和目的的说明;主要算法;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述;模块位置(在哪一个源文件中,或隶属于哪一个软件包);开发简历:模块设计者、复审考、复审日期。

③用标准的书写格式。源程序清单的书写建议采用以下几点:

b.用分层缩进的写法显示嵌套结构层次,这样可使程序的逻辑结构更加清晰,层次更加分明。

c.书写表达式时适当使用空格或圆括号作隔离符。

e.注释段与程序段、以及不同的程序段之间插入字行;

(2)数据说明采用的原则。在编写程序时,要注意数据说明的风格。

数据说明的次序如果规范,将有利于测试,排错和维护。首先说明的先后次序要固定,例如,按常量说明、简单变量类型说明、数组说明用数据块说明、所有的文件说明的顺序说明。当然在类型说明中还可进一步要求,例如按如下顺序排列:整型量说明、实型量说明、字符量说明、逻辑说明。

其次当用一个语句说明多个变量名时,应当对这些变量按字母的顺序排列。

最后对于复杂数据结构,应利用注释说明实现这个数据结构的特点。

(3)输入/输出方法。输入/输出的方式和格式应当尽量避免因设计不当给用户带来的麻烦。这就要求,源程序的输入/输出风格必须满足能否为用户接受这一原则。所以在设计程序时,应考虑以下原则:输入数据时,要使输入的步骤和操作尽可能简单,应允许使用自由格式输入;应允许缺省值;对输入的数据要进行检验,以保证每个数据的有效性。

在教学过程中,我们让学生设计一个程序模拟体育彩票的销售与对奖的过程,取得了良好的效果。他不仅启发和诱导了学生独立思考、积极思维的主动性,而且充分调动了学生学习的自觉性和积极性,使学生融会贯通地掌握了所学知识,提高了分析问题和解决实际问题的能力。

搞好c程序设计的教学工作涉及的因素很多,如果以项目来驱动教学,首先让学生树立面向工程的思想,其次把教学从单一的“结构化程序设计”向“结构化与面向对象并举”转变,最后特别要培养学生养成良好的编码风格,从而使他们学会能够“干什么”,那么我们认为教学目的就达到了。

我可以帮助你,你先设置我最佳答案后,我百度Hii教你。