每天3道面试题 01/12

2017-01-13 17:56 阅读 613 次 评论 0 条

const和#define的比较

①const具有数据类型,#define没有数据类型 ②个别编译器中const可以进行调试,#define不可以进行调试 ③在类中定义变量有两种方式:在类中声明常量,但不赋值,在构造函数初始化表中进行赋值;用枚举代替const变量。

C++函数中值的传递方式有哪几种?

①值传递 ②指针传递 ③引用传递

值传递:把实参的值复制给形参,对形参的修改并不会修改实参的值。从函数角度来说:函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的位置。

指针传递:是传值的一种特殊形式,只是它传递的是地址,实参和形参将会指向同一个对象。从函数角度来说:压栈的是指针变量的副本,当你对指针解引用时,其值是指向原来的那个变量,所以可以对原来变量进行操作。

引用传递:真正的以地址的方式传递参数,传递以后,形参和实参指向同一个对象,只是名字不同,对形参的修改将影响实参的值。从函数角度来说:压栈的是引用的副本,由于引用是指向某一个变量的,对引用的操作其实就是对它所指向的变量的操作。作用同指针传递一样。

如何在C++代码中对某句代码进行C代码的编译?

使用extern "C":它是C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数。这是因为C++编译后库中函数名会变得很长,与C生成的不一致,造成C++不能直接调用C函数,加上extren  "C"后,C++就能直接调用C函数了。extern “C”主要使用正规DLL函数的引用和导出和在C++包含C函数或C头文件时使用。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:每天3道面试题 01/12 | 术与道的分享
分类:剑指Offer 标签:,
1024do.com导航_术与道导航平台

发表评论


表情