一、前言

#include <stdio.h>
int main()
{
	printf("Hello World\n");
	return 0;
}

     相信大家已经看过第一个示例代码的效果了,这个程序所实现的效果很简单,就是在屏幕上输出了一行字符串"Hello World";我们根据这一行代码,借此了解一下C语言的基础语法知识。

二、C语言基础语法知识

1、主函数

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

int main() //主函数
{
	return 0;//主函数返回值
}

        main 翻译成中文是主要的、最重要的意思,而在C语言里面表示一个主函数。双斜杠后面的为注释 ,打一个比较形象的比喻, 注释就类似于老师在作业上的批注,一般来说,注释用于标注这段代码的用途或解释思路等。因为注释不会被当作代码进行编译,所以无论添加什么注释内容,都不会对代码的实际运行产生任何影响。

        如上段代码,用注释标注了哪个是主函数,哪个是是主函数的返回值。

2、写一个自己的函数

        我们可以自己写一个函数来实现某些功能,这里我们编写一个两个整数相加的函数,这个函数需要做到:输入两个整数,返回它们相加的结果。

        这个函数是用来计算加法的,所以我们可以将函数名称定义为add,函数名可以按照自己的喜好进行自定义,不过为了方便阅读理解,一般要让函数名称语义化。

int add(int a, int b)
{
	return a + b;//返回a+b的值
}

        如上段代码所示,这里我们定义了一个函数add,返回值类型为整形 int,输入值定义为两个整形变量,返回值是返回两个整数的和,两个加数都为整数,所以结果也是一个整数。

        好了,这里我们已经成功写完了一个add函数,这一段代码被称之为add函数的函数定义

3、主函数是整个C语言程序的入口

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

        答案是不行的。

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

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

        我们将代码稍作修改,如下段代码所示:

#include <stdio.h>
int add(int a, int b);//声明add函数
int main()
{
	int sum;
	sum = add(1,2);//调用add函数
	printf("%d\n", sum);//将结果打印到控制台
	return 0;//返回0
}

int add(int a, int b)
{
	return a + b;//返回a+b的值
}

        当程序运行时,首先会进入主函数main 。接着调用我们刚刚编写的add函数了。我们传了2个值分别是1和2给add函数。函数的定义中规定了需要传a、b,2个参数,我们调用的时候,也必须传2个,并且类型也需要尽量一致,否则编译可能会报错。(若类型不同,编译器会尝试自动类型转换。自动类型转换失败则会编译失败)

        调用完后,通过printf函数将结果打印到控制台上,结果如下:

        可以看到结果是3,说明我们成功地调用了add函数,并将结果输出了出来。

        通过上面这段代码,我们会想到,主函数是被谁调用的?主函数的返回值类型必须是int吗?

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

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

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

4、要调用函数,必须先知道函数

        我们再来看看,编译器是怎么理解 add 这个名称的。

        编译器会从代码开始,按照从上往下的顺序阅读代码。看到这里你可能会疑惑,明明add函数在main主函数的下面,为什么还能正常调用?

        这是因为我们在函数调用add函数前提前声明了add函数,让编译器知道了这段程序中有add这个函数,所以无论add函数在main主函数下面还是上面,都可以正常调用,函数声明十分重要,与后面的模块化编程有重要联系。这里先简单了解一下。

        如果我们将函数声明去掉,将add函数放在main主函数上面,编译也是可以正常通过的。这是因为编译器看到了一个名为add函数的定义,在后面mian主函数要调用add时,由于编译器已经知道了 add 的定义,因此编译器可以正常编译通过。

        反之,如果既没有进行函数声明,又将add函数放在了mian主函数的下面,那么编译器看到了 add 这个名称就会很疑惑, add 是什么呢?编译器无法理解 add 究竟是什么。因此,编译器将报错,并停止编译。

5、什么是变量

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

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

        sum 只是我门给它起的一个名字,当然,你可以任意起名。

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

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

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

6、标识符

        在前面的代码中,由我们自己命名,用于指代某一个实体的名称,例如:add,sum,函数的参数a,b都是一个 标识符 。

        标识符由我们自己命名的一个特殊标识,用于表示一个变量、函数或其他实体的名称。

        例如前面我们的自定义函数取名为add是为了清晰地表明函数意图。而将变量命名为sum,也是为了表明变量内保存的是函数返回的结果。

        并且,要让编译器能够识别标识符,必须进行声明或定义。例如,add被定义成了一个函数,sum,a,b被声明成了一个整数类型变量。如果编译器遇到未经定义或声明的标识符,将会无法理解这个标识符具体是一个什么实体的名称而报错。

        在C语言中,标识符的可以按照你的喜好自己随意命名,但是必须遵循以下规则:

        标识符可以用小写字母、大写字母、数字和下划线来命名。但是,标识符的第一个字符必须是字母或下划线,而不是数字。并且,标识符区分大小写。

7、关键词

        首先,我们可以想一下,int是标识符吗?

        答案是否定的,首先int并不是我们随意命名的,其次int并不是任何实体的名称。

        int是C语言中的一个关键词 。

        关键词是在语言标准中规定的,并且在代码中有特殊意义和用途。因此,关键词不能作为一个标识符来使用。

        C语言中的关键词如下图所示。

8、什么是字面常量

        像1,2,这种数值,需不需要声明呢?

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

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

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

9、printf函数

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

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

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

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

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

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

printf("%d", 12345);//这里将整数12345通过%d显示出来

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

printf("A=%d\nB=%d\n", 123, 456);// \n表示换行,就是从下一行开始再继续打印

        printf 的第一个参数必须是字符串 ,这里我们传入了一个字符串字面常量(被双引号包裹)。其中,占位用 %转换操作表示。例如:整型int的占位符为 %d 。后面的替换参数,会依次替换前面的占位。 printf 是一个变长参数函数,只要第一个字符串参数占位符写对了,后面可以加任意多的替换参数。

10、#include命令

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

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐