C++学习基础篇——c++与C语言的区别

Posted Tiramisu1104

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习基础篇——c++与C语言的区别相关的知识,希望对你有一定的参考价值。

1、从c到C++

      1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup博士并不是从头开始设计新语言,而是在C语言的基础上进行创建。这就是C++语言。

     1985年,C++开始在外面慢慢流行。经过多年的发展,C++已经有了多个版本。为次,ANSI和ISO的联合委员会于1989年着手为C++制定标准。1994年2月,该委员会出版了第一份非正式草案,1998年正式推出了C++的国际标准。
     c语言盛行的同时,也暴露了他的局限性。

(1)c语言检查机制相对弱,这使得程序中的一些错误不能在编译时发现。

(2) C本身没有代码重用机制,因此一个精心设计的程序,很难为其他程序所用。

(3)当程序的规模到达一定程度时,程序员很难控制程序的复杂性。

c++包含了整个c,C是建立C++的基础,c++包含C的全部特征、属性、和优点,同时添加了面对对象编程(oop)的完全支持。

2、标准输入输出流

     在C语言中,输入输出是使用语句scanf()printf()来实现的,而C++中是使用类来实现的。

  I/O流是输入或输出的一系列字节,当程序需要在屏幕上输出时,可以使用插入操作符"<<"向cout输出流中插入字符。例如:

cout<<"This is a program\\n";

当程序需要执行键盘输入时,可以使用抽取操作符">>"从cin输入流中抽取字符。例如:

int myAge ;
cin>>myAge;

3、printf与scanf

printf和scanf是标准输入输出函数,他们是C程序中所使用的,在头文件stdio.h中声明了这两个函数,在C++面对对象的程序设计中,I/O流代替了他们,在过程化程序设计中,printf和scanf在使用习惯上作为C++流的一个补充。

(1)printf函数的一般格式。

printf(格式控制字符串,输出项1,输出项2,.....)

例如:

#include<stdio.h>
void f ()

    int a=10 ,b=20;
    printf("%d %d",a,b);

4、函数的参数问题

(1)无名的函数形参

int fun(int x, int)

    return x*2;

(2)函数的默认参数

C++函数的原型中可以声明一个或多个带有默认值的参数。如果调用函数时,省略了相应的实际参数,那么编译器就会把默认值作为实际参数。可以这样来声明具有默认参数的C++函数原型:

#include iostream.h
 
void show(int = 1,float = 2.3,long = 6);
 
int main()

	show();
	show(2);
	show(4,5.6);
	show(8,12.34,50L);
	
	return 0;

上面例子中,第一次调用show()函数时,让编译器自动提供函数原型中指定的所有默认参数,第二次调用提供了第一个参数,而让编译器提供剩下的两个,第三次调用则提供了前面两个参数,编译器只需提供最后一个,最后一个调用则给出了所有三个参数,没有用到默认参数。

5、函数重载

在C++中,允许有相同的函数名,不过它们的参数类型不能完全相同,这样这些函数就可以相互区别开来。而这在C语言中是不允许的。

(1)参数的个数不同:

#include iostream.h
 
void a(int,int);
void a(int);
 
int main()

	a(5);
	a(6,7);
	
	return 0;

(2)参数的格式不同:


#include iostream.h
 
void a(int,int);
void a(int,float);
 
int main()

	a(5,6);
	a(6,7.0);
 
	return 0;

6、变量作用域

C++语言中,允许变量定义语句在程序中的任何地方,只要在是使用它之前就可以;而C语言中,必须要在函数开头部分。而且C++允许重复定义变量,C语言也是做不到这一点的。


#include iostream.h
 
int a;
 
int main()

	cin >> a;
	for(int i = 1;i <= 10; i++) //C语言中,不允许在这里定义变量
	
		static int a = 0; //C语言中,同一函数块,不允许有同名变量
		a += i;
		cout<<::a<< <<a<<endl;
        		
	return 0;

7、new和delete运算符

在C++语言中,仍然支持malloc()和free()来分配和释放内存,同时增加了new和delete来管理内存。

int size;
	cin >> size;
	int *array = new int[size];
	for(int i = 0;i < size;i++)
		array[i] = rand();
        for(i = 0;i < size;i++)
		cout << '\\n' << array[i];
        delete [] array;

以上是关于C++学习基础篇——c++与C语言的区别的主要内容,如果未能解决你的问题,请参考以下文章

C++ 学习基础篇—— C++与C 的区别

C++面试八股文快问快答の基础篇

C语言中++c与c++有啥区别?

探索篇 | C语言基础归纳 No.1

python与c区别都有哪些

C vs C++?,C++基础教程之C++与C的区别