C语言和C++的不同之处和相通之处
来源:互联网 发布:程序员是吃青春饭的吗 编辑:程序博客网 时间:2024/04/19 20:16
记得有一次参加面试,主考官问我说:“你知道C语言和C++有什么不同吗?”我当时只说上来几点,比如C语言是面向过程的,C++在C语言的基础上增加了面向对象的机制;语法不同啊等等,说的都比较笼统,所以在这里我想系统的分析一下,C语言和C++有哪些不同和相同之处,以及它们各自的优越性。
一、应用场合
C语言:C语言是结构化和模块化的语言,是面向过程的。当程序的规模较小时,C语言运用起来得心应手。但是当问题比较复杂、程序的规模比较大的时候,C语言就会展现出它的局限性。
C++:正是因为有大规模的程序需要去处理,C++就应运而生了。C++是由C发展而来的,与C语言兼容。C++既可用于面向过程的结构化程序设计,也可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。
与此看来,它们两者并两个孤立的个体,有着密切的连接关系。C++可以看做是C的超集,其实任何语言之间都没有明显的界限,C语言是基础,在此基础上所开发出来的所有语言都是在不同的场合发挥着它们独特的作用以及展示它们各自的优越性。
二、语法的不同之处
1、头文件
C语言:#include //标准输入、标准输出
**C语言中所有的头文件都带后缀 .h(比如stdio.h)
C++:#include//输入输出流所包含的头文件
using namespace std;//C++标准库中的类和函数是在命名空间std中声明的。
**C++中有系统提供的头文件不带后缀 .h,用户自己编制的头文件可以有后缀 .h。
2、输入/输出函数
C语言:用一个例子说明一下:
int a=1;
double d=3.1415926;?
printf("%d\n",a);
printf("a=%d\n",a);
printf("b=%6.3f, b=%6.2f, b=%.3f\n",b,b,b);
scanf("%d",&a);//取地址,输入a的值
%d和%f称为格式说明符,表示以此格式输出对应表达式的值,\n表示换行。%6.3f 中的6表示占六列,.3 表示输出对应浮点表达式值时只输出三位小数。
C++:也是用一个例子说明:
int a=5;
float b;
cout << "a="<<a<<endl;
cin >>b;
cout必须要和”<<“一起使用,cin必须要和”>>“一起使用。我觉得C++中的输入输出流是很强大的,它不像C里面还要指定格式。endl表示换行。
2、字符串
另外一个我觉得C++里面另外一个特别好用的用来存放字符串的就是string,它是在C++标准库中声明的一个字符串类。
C语言:char a[20]="hangzhou";
char *p="hangzhou";
可以用上面两种方式 ,一种是用数组的方式存储字符串,另外一种是用字符串指针。这两种方法都有一个麻烦的地方就是,字符串的连接、比较啊等等都需要调用函数执行,比如strcmp函数、strcat函数、strcpy函数。
strcmp:字符串比较
strcat:字符串连接
strcpy:字符串复制
C++: string s1="abcd";
string s2="hello world";
string s3=s1+s2;
s1=s2;
字符串连接:s1+s2
字符串拷贝:s1=s2
字符串比较:s1==s2 s1!=s2
由此看来是不是方便了许多?
3、结构体和类
C语言:结构体
struct Student //声明了一个名为Student的结构体类型
{ int num;
char name[20];
char sex;
} ;
Student stud1,stud2;//定义了两个结构体变量 ,默认情况下为public类型。
C++:类
class Student
{ private:
int num;
char name[20];
char sex;
public:
void display()
{ cout<<"num="<<num<<endl;
cout<<"name="<<name<<endl;
cout<<"sex="<<sex<<endl; }
};
Student stud1,stud2;//定义了两个Student类的对象
C++中的类将数据和操作封装在一起,并且指定了访问权限。如果不指定public,也不指定private,则系统就默认为私有的,这一点和C语言中的结构体是不一样的。因为类的出现,那么继承和派生、多态性等问题也就接踵而至了。
三、总结
C语言和C++的不同,除了表现在使用的场合不同,还有更多的是表现在语法的不同,但是基本的思想是一致的。还是那句话,C语言更加注重的是过程,C++除了保留C语言的优点,还增加了面向对象的机制。其中的细节有很多,在这里就不一一列举了,只是一个大致的方向。如果希望更深一步的学习,可以参考《C++面向对象程序设计》谭浩强 编著和《C语言程序设计》陆蓓 主编
- C语言和C++的不同之处和相通之处
- C语言和C++的不同之处和相通之处
- 论JavaScript和C/C++语言的相通之处
- C语言和C++的不同之处和相同之处
- c51和一般c语言的不同之处
- C # 和 Java的不同之处
- C语言中宏和函数的不同之处
- C、C++和C#的不同之处
- Objective-C和C++的不同之处
- C语言要注意和c++ 两点不同之处
- C语言和C++的几点不同之处,const,register,三目运算符,&引用
- C语言不同之处
- Python语言与C、Java的不同之处
- C和C++对待全局对象的一个不同之处
- Ubuntu中ctrl+c和ctrl+z的不同之处
- c/c++ 数组和指针的一些不同之处
- C语言之#和##
- C语言之#和##
- linux设置程序开机启动
- JSTL简介
- java多态--08
- C语言实现头插法(链表)
- ZOJ - 2480 Simplest Task in Windows
- C语言和C++的不同之处和相通之处
- O(logn)时间复杂度求Fibonacci数列(java)
- Metasploit测试暴雷漏洞 (编号CVE-2012-1889)
- Xcode 自动生成代码注释文档
- HDU 1097 A hard puzzle 求个位数
- 实现客户给的URL接口,以爬虫的方式
- Invert Binary Tree
- 二分图不带权匹配
- 在action跳转的jsp页面中引入静态js、css文件