C语言与C++的区别

首先应该介绍的是C++的发展史,大致来讲就是一些人发现了C语言存在一些无法解决的问题,从而对其进行改进,从“C with Class”到C++1.0、C++2.0等各个版本,这里不进行赘述,有兴趣的小伙伴可以进行百度,本文主要讲述一些C++与C原因的区别,对学习过C语言后想要学习C++同学做一个引导;

注:本文使用windows32系统下的Microsoft Visual Studio 2013进行编写

1.文件名的后缀

C++的源文件使用”.cpp”文件后缀,创建时若不写后缀默认也为.cpp格式。

图片名称

2.返回值

如果不写返回值,C语言中可以这样做,会返回一个int型的值,但在C++中则无法这样做,会直接拨错编译失败,因此当函数没有返回值的时候,需要显示的给出void的返回值。

图片名称图片名称

3.参数列表

无参数列表时,在C语言中可以给任意多个参数,都可以接受,但在C++中,如果没有参数列表,表示该函数不接受任何参数。

图片名称图片名称

4.缺省参数

声明或定义函数时为函数的参数指定一个默认值,在调用函数时,如果没有指定实参则使用该默认值,否则就会使用传进来的实参。这种方法在C++中支持,而C语言不支持。

图片名称 图片名称

当然,在C++中缺省参数也有半缺省和全缺省之分,顾名思义,全缺省就是所有参数都有缺省值,半缺省则只有部分参数有缺省值,这里就需要注意了,半缺省中的缺省参数一定在参数列表的尾

例如:

int FunTest(int a, int b = 0; int c)//错误写法
{}
int FunTest(int a, int b; int c = 0)//正确写法
{}
int FunTest(int a, int b = 0, int c = 0)//正确写法+1
{}

5.函数重载

C++允许在同一作用域中声明几个功能类似的同名函数,且这些同名函数的形参列表必须不同,常用来处理实现功能相似数据类型不同的问题,

例如一个简单的加法函数,想让它实现各种类型(如int,double,char)的加法,在C语言中,只能以不同的函数名来实现。但在C++中,可以使用同一个函数名。

当然这里强调的是:一定是形参列表不同,假如两个函数形参列表相同或没有参数,但他们的返回值不同,这时是构不成重载的,因为编译器并不知道应该调用哪一个函数,会造成二义性错误。
图片名称 图片名称

6.引用

我们在学习C语言时,知道函数传参有两种方法:值传递和址传递。而在C++中,除了指针,还有一个引用的概念,引用是给一个已经存在的变量取了一个别名,两者一定为同种类型,编译器不会给引用变量新开辟内存空间,其与引用的变量共用同一块空间。

写法为:类型& 变量=引用的变量

这里写图片描述

而其和指针又有什么区别:

指针引用
可以不初始化必须初始化
可以指向其他变量不能指向其他变量
存在NULL指针没有NULL引用
有多级指针没有多级引用
自增改变指向自增改变变量内容

引用在C++中使用较为广泛,需要在学习练习中加深理解。
7.命名空间与输入输出

命名空间(namespace)由于C++中存在大量的变量、函数和类,他们的名称都是存在于全局命名空间中,很容易形成命名冲突,因此引入命名空间的概念,其定义了一个范围,在命名空间中定义的东西值在命名空间的范围内有效。

namespace one
{
    int a;
    int b;
    int c;
    namespace two
    {
        int a;
        int b;
        int c;
    }
}

此时two中三个变量和one中的变量就会没有冲突。
除了使用命名空间,还可以导入已经存在的命名空间:

using namespace std

这里的std是标准命名空间,在此命名空间下,C++可以使用不同于C语言的输入输出方法:

int main()
{
    int a;
    cin >> a;
    cout << a << endl;
    return 0;
}

其中cout为标准命名空间std中输出流对象,cin为输入流对象“<<”于“>>”分别为输出输入操作符,表示将后面的内容流入到相应的对象中。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页