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语言程序设计》陆蓓 主编

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗便秘怎么办吃什么 痔疮又痛又痒怎么办 痔疮肉球特别痒怎么办 长了个小痔疮怎么办 产后4天没大便怎么办 7个月孕妇痔疮怎么办 运动完恶心想吐怎么办 跑步后恶心想吐怎么办 肠子不蠕动严重便秘怎么办 怀孕八个月严重便秘怎么办 怀孕七个月便秘严重怎么办 怀孕两个月便秘严重怎么办 3岁宝宝上火便秘怎么办 7个月的宝宝贫血怎么办 9个月婴儿贫血怎么办 肛裂大便有血怎么办 生完宝宝肛门痛怎么办 肛周脓肿出血了怎么办 胃胀怎么办简单的办法 吃多了胃胀难受怎么办 胃窦炎胆汁反流怎么办 怀孕总胆汁酸高怎么办 胃里胆汁反流怎么办 苦胆水吐出来了怎么办 喝多了吐胆汁怎么办 吐出黄水苦水是怎么办 喝酒喝的一直吐怎么办 孕期总胆汁酸高怎么办 孕早期胆汁酸高怎么办 孕妇总胆汁酸高怎么办 宝宝一天吐了6次怎么办 肛周脓肿破了怎么办 肛周脓肿发烧了怎么办 肛周脓肿便血该怎么办 婴儿得肛周脓肿怎么办 水痘长在龟头上怎么办 轻度萎缩性胃炎伴肠化怎么办 肺癌晚期腿肿了怎么办 胸骨剑突按压痛怎么办 22岁有白头发怎么办 血热导致掉头发怎么办