您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 面试题,求解答

面试题,求解答

来源:网络整理     时间:2016/7/26 4:02:58     关键词:

关于网友提出的“ 面试题,求解答”问题疑问,本网通过在网上对“ 面试题,求解答”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 面试题,求解答
描述:

1.下面哪里不妥,请改正
swap( int* p1,int* p2 )
{
 int *p;
 *p = *p1;
 *p1 = *p2;
 *p2 = *p;
}
2.解释下面宏作用
#ifdef __cplusplus
extern "C" {
#endif 
3.请说出static和const关键字尽可能多的作用


解决方案1:

1. 只需要交换指针,不需要交换指针所指的内容(当然代码里面还有内存问题)
2. 如果用的编译器是c++的编译器就使用 “C链接”
3. static 和const 的功能多的去了,建议在网上搜一篇比较全面的文章看一下

解决方案2:

1.*p野了,函数没有返回类型
void swap(int *p1, int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
2.是C++里写 C语言代码用的吧,对C++不太了解,不过在C++里看到过这个东西……
3.在C中
static限制文件作用域,对static变量来说,只初始化一次,分配在内存的.data或者.bss段。
const在C里可以理解成readonly但决不会是常数,不能用在switch的case里 

解决方案3:

1 int *p;  未初始化
2 如果定义了这个宏__cplusplus ,则  extern "C" {  有效
3 staic在函数体内或一个模块中有效,被const 修饰的不能被修

解决方案4:

1.*p没有开辟空间啊
2.__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。
3.....(网上书上写的很多)

解决方案5:

1.产生了野指针p
正确应该是
swap( int* p1,int* p2 )
{
 int p;
 p = *p1;
 *p1 = *p2;
 *p2 = p;
}
2.为了实现C和C++的混合编程C++提供了C连接时指定符号extern "C"来解决名字匹配问题,函数声明前加上extern "C"后,则编译器就会按照C语言的方式将该函数编译为C语言格式,为了实现重载C++的函数编译类如func_int_int之类的名字,加上它后与C统一,便于相互调用
3.在文件内的static全局变量可以被文件内所用函数访问,但不能被文件外其它函数访问,函数体内static变量的作用范围为该函数体,此内存只被分配一次,因此其值在下次调用时仍维持上次的值,类的static成员变量属于类所拥有,对类的所有对象只有一份拷贝,类的static成员函数属于类所拥有,这个函数不接收类对象的指针,只能访问类的static成员变量.
const关键字可以防止一个变量被改变,对指针来说,可以指定指针本身为const,也可以所指的数据为const,或二者同时指定为const,在一个函数声明中const可以修饰形参(内部不能改变),修改返回值(类中函数),代表返回值不能作为左值,即进行赋值,修改类函数(表明是常量函数不能修改类的成员变量)
大概就这么多了


以上介绍了“ 面试题,求解答”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2930178.html

相关图片

相关文章