编程语言爱好者我爱编程

c和c++的关系

2015-04-19  本文已影响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把内部连接改成外部连接。

上一篇下一篇

猜你喜欢

热点阅读