c和c++的关系

作者: 冰吉凌 | 来源:发表于2015-04-19 14:00 被阅读152次

    1 在c++中调用被c编译器编译后的函数,为什么要加extern "c";

    因为c++语言支持函数重载,而c语言不支持函数重载;函数被c++编译后在库中的名字与c语言的不同。

    例如假设函数原型为void foo(int x,int y),该函数在被c编译器编译后名字为_foo,而被c++编译器编译之后产生像_foo_int_int的名字。

    2头文件的ifndef/define/endif作用?

    防止头文件被重复引用。

    3  c和c++各自的特点

    c语言是一种结构化语言,重点在于算法和数据结构。C程序的设计首先考虑的是如何通过一个过程,对输入进行运算处理得到输出;

    c++首先考虑的是如何构造一个对象模型,让对象模型能够契合与之对应的问题域,这样可以通过获取对象的状态信息得到输出或者实现过程控制。

    1)C++与C语言相比有何特点

    全面兼容C语言;支持面向对象编程;C++的可重用性、可扩充性以及可维护性较好。

    (2)C++与C语言程序结构有何不同

    C语言的程序结构主要包括预处理程序、自定义类型说明、常量定义、函数定义以及主函数定义几大部分;

    C语言的程序结构在C++中也是适用的,此外C++还有类的定义和使用两个主要组成部分。

    (3)C++与C语言如何处理输入输出

    C语言中使用scanf()函数实现格式化输入,使用printf()函数实现格式化输出。如果输入和输出函数中格式化类型与实际类型不符时,C编译器无法检查出错误,但是程序运行时会出现问题。

    C++采用了流的形式来控制输入和输出操作,cin为标准输入流,cout为标准输出流;即使输入输出语句中定义了不同类型的数据,在编译和执行过程中将不会出现任何错误信息。

    (4)C++与C语言中局部变量的声明方式有何不同

    c语言中,全局变量必须声明在所有函数之前,局部变量必须声明在所有可执行语句之前;

    C++中允许在代码模块中的任意位置对局部变量进行声明。

    (5)C语言允许函数重载么?C++对于函数重载有什么要求?

    C语言中不存在函数重载的概念,不允许出现名称相同的函数;

    C++允许重载函数,即对于函数参数类型不同、参数个数不同或者参数类型和个数都不同的情况。

    (6)处理动态存储分配问题时C++和C语言有何不同?

    C语言中使用malloc()函数分配动态内存空间,使用free()函数释放动态内存空间;由于malloc函数返回的是void型指针,因而需要强制转换类型。

    C++则采用new和delete操作符,new可以自动计算所要分配的内存大小,并返回正确的指针类型;new 可以自动调用构造函数。

    (0)const的区别

    c中,const是一个不能改变的普通变量,他总是占用内存,是全局符;c编译器不能把const看成一个编译期间的常量。

    即:const bufsize =100;

    char buf[bufsize];

    用c的编译器编译时结果错误;用c++的编译器,结果正确。

    c默认const是外部连接,c++默认const是内部链接,如果想要在c++中完成c中同样的事,必须使用extern把内部连接改成外部连接。

    相关文章

      网友评论

        本文标题:c和c++的关系

        本文链接:https://www.haomeiwen.com/subject/dxegxttx.html