C语言是面向过程的,而C++是面向对象的
C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
函数
在前面我们已经讲过了一些简单的函数,如程序的主函数main()、标准输出函数printf()。在C语言中,大多数功能都是依靠函数来实现的。But,你知道什么是函数吗?我猜你肯定不知道。
那么今天我们来仔细的讲解一下什么是函数,函数的定义、内部函数与外部函数等相关知识。
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
1 . 函数的定义
假设有一个射击游戏程序,程序在运行过程中,要不断地发射子弹打死怪物。Biu!Biu!Biu!假设发射子弹的代码有100行,如果说我每射击一次就要写这100行代码一次,那么可能现在的程序员哥哥都已经累死在电脑桌前了。即便没累死,这样写出来的程序也会从几十KB变成几百M,同时维护这些程序代码的程序员哥哥看到游戏连续射击时代码量的时候,也会果断的拔出菜刀砍死你。
那该怎么办呢?为了解决【重复编写代码】这个问题,我们可以把发射子弹这部分的代码给单独拿出来放在一个{}中,并为这段代码起个名字。这样,每次我们需要发射子弹的时候,通过这个名字来调用发射子弹的代码块就可以了,而不是发射一次就编写一次射击动作。是不是感到很惊奇?
而这上面我们所提取并组合起来的代码块可以被看作是程序中自己定义的一个函数,玩游戏时,在需要发射子弹的地方调用这个函数就可以了。
在C语言中,定义一个函数的具体语法格式如下:
返回值类型函数名([[参数类型参数名1],[参数类型参数名2],……,[参数类型 参数n]])
{
执行语句
………
return 返回值;
}
l 返回值类型:用于限定函数返回值的数据类型;
l 函数名:表示函数的名称,该名称可以根据标识符命名规范来定义;
l 参数类型:用于限定调用方法时传入参数的数据类型;
l 参数名:用于接收调用方法时传入的数据;
l return关键字:用于结束函数,并返回函数指定类型的值;
l 返回值:被return语句返回的值,该值会返回给调用者。如果函数没有返回值,则返回值类型要声明为void,此时,函数体中的return语句可以省略不写。
在上面的语法格式中,函数中的“[[参数类型参数名1],[参数类型参数名2],…,[参数类型 参数n]]”被称作参数列表,它主要是用来描述函数在被调用时需要接收的参数。如果你的函数不需要接收任何参数,那么设置参数列表为空就好了,这样的函数被称为无参函数。相反地,参数列表不为空的函数就是有参函数。接下来分别讲解这两种函数。
1、无参函数
在C语言中,无参函数的定义很简单,先来看一个定义无参函数的示例代码,具体如下:
void func()
{
printf("这是我的第一个函数! ");
}
在这个示例代码中,func()函数就是一个无参函数,在定义时参数列表为空。要想执行这个函数,需要在main()函数中调用它。
案例1:
1 #include
1 void func(int x, int y)
2 {
3 int sum = x + y;
4 printf("x+y=%d ", sum);
5 }
6 void main()
7 {
8 func(3, 5);
9 }
运行结果:
在这个程序中,第2~6行代码定义了一个函数func(),这个函数包含两个参数,分别是x和y。当在main()函数中调用func()函数时,由于传入的参数是3和5,因此,程序打印的结果为“x+y=8”。下面通过一张图来描述func()函数的调用过程。
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
从图中可以看出,有参函数和无参函数的调用过程类似,只不过在调用有参函数时,需要传入实参,并将传入的实参赋值给形参,然后在函数体中执行x+y操作,最终将结果输出到控制台。
值得一提的是,在定义有参函数时指定的参数x和y是形式参数,简称形参,它们只在形式上存在,并不是真正存在的参数。调用函数时传入的参数(如案例中的3和5)是实际参数,简称实参,与形参相对,实参则是指实际存在的参数。
2 . 函数的返回值
了解了函数之后我们会发现,其实函数的返回值是指函数被调用之后,返回给调用者的值。
函数返回值的具体语法格式如下:
return 表达式;
对于返回值为空的函数,可以直接在return语句后面加分号,具体语法格式如下:
return;
为了让大家更好的理解如何使用return语句,接下来对案例1进行改写,使func(int x, int y)函数能够返回求和计算的结果。
案例2:
1 #include
10 int func(int x, int y)
11 {
12 int sum = x + y;
13 return sum;
14 }
15 void main()
16 {
17 int sum = func(3, 5);
18 printf("x+y=%d ", sum);
19 }
运行结果:
从图中可以看出,案例1与案例2实现了同样的功能。接下来通过一个图例来演示func()函数的整个调用过程以及return语句的返回过程,如下图所示。
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
从图中可以看出,在程序运行期间,参数x和y相当于在内存中定义的两个变量。当调用func(int x,int y)函数时,传入的参数3和5分别赋值给变量x和y,并将x+y的结果通过return语句返回,整个方法的调用过程结束,变量x和y被释放。
需要注意的是,return后面表达式的类型和函数定义返回值的类型应保持一致。如果不一致,就有可能会报错。如果函数没有返回值,返回值类型要声明为void。为了保证程序的可读性和逻辑性,没有返回值的函数都应定义为void。
这些是C/C++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等
生活不止眼前的苟且,还有到不了的远方和读不完的诗!