C语言和C++的区别-创新互联

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

专注于为中小企业提供成都网站建设、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业裕华免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

C语言和C++的区别

C语言文件后缀为.c,c++原文件名后缀为.cpp 
如果在创建源文件时什么都不给,默认是.cpp 
3.返回值不同 
C语言中,如果一个函数没有指定返回值类型,默认为int类型,并返回一个随机数,一般为0XCCCCCCCC 
在C++中,如果函数没有返回值则必须指定为void型,否则编译不能通过 
4、参数列表 
在C语言中,函数没有指定的参数列表时,默认可接收任意多个参数 
在C++中,有严格的参数类型检测,没有参数列表的函数,默认为void,不接收任何参数。 
缺省参数 
缺省参数是声明和定义时函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用默认值,否则使用指定的实参。 
如下代码:

#includeusing namespace std;void test(int a = 1)
{    cout << a << endl;
}int main()
{
    test();
    test(10);//输出的结果是1
    return 0;//函数输出结果是10}

首先是全缺省,全缺省参数所有参数都有默认值,如果没有手动传参,那么编译器会使用默认参数列表中的参数。但是这里值得注意的是,如果传参的时候只传了部分参数,那么该值会被从左至右匹配。 
代码示例:

#includeusing namespace std;void test(int a = 1,int b = 2, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}int main()
{
    test();//1 2 3
    test(10);//10 2 3
    test(10, 20);//10 20 3
    test(10, 20, 30);//10 20 30
    return 0;
}

void test(int a ,int b = 2, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}void test1(int a, int b, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}

带缺省值的参数必须放在参数列表的最后面。因为传参是从右向左的。  
缺省参数不能同时在函数声明和定义中出现,只能二者留其一。  
缺省值必须是常量或者全局 
变量。  
C语言并不支持缺省。 
5、C++支持函数重载,C语言不支持 
在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。在C语言中,程序员往往需要分别设计出三个不同名的函数,其函数原型与下面类似:

void swap1(int *a, int *b); //交换 int 变量的值
void swap2(float *a, float *b); //交换 float 变量的值
void swap3(char *a, char *b); //交换 char 变量的值
void swap4(bool *a, bool *b); //交换 bool 变量的值

参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。

#include using namespace std;//交换 int 变量的值void Swap(int *a, int *b){int temp = *a;
*a = *b;
*b = temp;
}//交换 float 变量的值void Swap(float *a, float *b){float temp = *a;
*a = *b;
*b = temp;
}//交换 char 变量的值void Swap(char *a, char *b){char temp = *a;
*a = *b;
*b = temp;
}//交换 bool 变量的值void Swap(bool *a, bool *b){char temp = *a;
*a = *b;
*b = temp;
}int main(){//交换 int 变量的值int n1 = 100, n2 = 200;
Swap(&n1, &n2);cout<

200, 100 
56.93, 12.5 
B, A 
1, 0

重载就是在一个作用范围内(同一个类、同一个命名空间等)有多个名称相同但参数不同的函数。重载的结果是让一个函数名拥有了多种用途,使得命名更加方便(在中大型项目中,给变量、函数、类起名字是一件让人苦恼的问题),调用更加灵活。

在使用重载函数时,同名函数的功能应当相同或相近,不要用同一函数名去实现完全不相干的功能,虽然程序也能运行,但可读性不好,使人觉得莫名其妙。 
 注意,参数列表不同包括参数的个数不同、类型不同或顺序不同,仅仅参数名称不同是不可以的。函数返回值也不能作为重载的依据。

6、指针和引用 
C语言中函数传参方式有两种:传值和传址 
以传值方式,在函数调用过程中会生成一份临时变量用形参代替,最终把实参的值传递给新分配的临时形参。它的优点是避免了函数调用的副作用,却无法改变形参的值。如果要改变实参的值,只能通过指针传递。 
指针可以解决问题,但是不安全,因此在C++中引入了引用。 
引用:引用不是新定义的一个变量,他是原变量的一个别名,编译器不会为引用变量开辟空间,它和他引用的变量共用同一块内存空间。 
类型& 变量(对象名)=引用变量 
int &num1=num0; 
引用特性;:
(1)引用定义时必须初始化 
(2)一个变量可以有多个引用 
(3)引用一旦绑定一个实体就不能改变为其他变量的引用 
//指针和引用的区别 
引用不可以为空,但指针可以为空 
引用不可以改变指向,对一个对象”至死不渝”;但是指针可以改变指向,而指向其它对象 
引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。

在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局命名空间中,会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或者名字污染,namespace关键字的出现就是解决这种问题。而C语言中没有。 
8、输入与输出 
cout代表c++的输出流 
cin代表c++的输入流 
它们都是在头文件“iostream”中定义。 
“cout”必须与”<<”一起使用,“<<”起到插入的作用。 
在一条语句中可以多次使用“<<”输出多个数据。 
如:cout<

#include using namespace std;int main()
{int a,b;cout<<"请输入a,b的值"<>a>>b;cout<<"输出a的值"<


本文名称:C语言和C++的区别-创新互联
文章出自:http://myzitong.com/article/eocdi.html