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语言的区别的主要内容,如果未能解决你的问题,请参考以下文章