面试题,求解答

ajaxheader 2008-11-11 09:01:02
1.下面哪里不妥,请改正
swap( int* p1,int* p2 )
{
 int *p;
 *p = *p1;
 *p1 = *p2;
 *p2 = *p;
}

2.解释下面宏作用
#ifdef __cplusplus

extern "C" {
#endif

3.请说出static和const关键字尽可能多的作用
...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangbbo 2008-11-11
  • 打赏
  • 举报
回复
学习
budweiser 2008-11-11
  • 打赏
  • 举报
回复
1. 只需要交换指针,不需要交换指针所指的内容(当然代码里面还有内存问题)

2. 如果用的编译器是c++的编译器就使用 “C链接”

3. static 和const 的功能多的去了,建议在网上搜一篇比较全面的文章看一下
mifeixq 2008-11-11
  • 打赏
  • 举报
回复
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里
cyj626 2008-11-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xhs_lh04 的回复:]
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全局变量可以被文件内…
[/Quote]

太全面了
cyj626 2008-11-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xhs_lh04 的回复:]
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全局变量可以被文件内…
[/Quote]

太全面了
ivan8222 2008-11-11
  • 打赏
  • 举报
回复
1 int *p; 未初始化

2 如果定义了这个宏__cplusplus ,则 extern "C" { 有效

3 staic在函数体内或一个模块中有效,被const 修饰的不能被修
xhs_lh04 2008-11-11
  • 打赏
  • 举报
回复
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可以修饰形参(内部不能改变),修改返回值(类中函数),代表返回值不能作为左值,即进行赋值,修改类函数(表明是常量函数不能修改类的成员变量)
大概就这么多了
Longinc 2008-11-11
  • 打赏
  • 举报
回复
1.*p没有开辟空间啊
2.__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。
3.....(网上书上写的很多)
作者:July、阿财。 时间:二零一一年十月十三日。 ------------------------------ 无私分享造就开源的辉煌。 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年。在一周年之际,特此分享出微软面试 全部100题案的完整版,以作为对本博客所有读者的回馈。 一年之前的10月14日,一个名叫July 的人在一个叫csdn 的论坛上开帖分享微软等公司数据结构+算法 面试100题,自此,与上千网友一起做,一起思考,一起解这些面试题目,最终成就了一个名为:结构之法 算法之道的编程面试与算法研究并重的博客,如今,此博客影响力逐步渗透到海外,及至到整个互联网。 在此之前,由于本人笨拙,这微软面试100题的案只整理到了前60题(第1-60题案可到本人资源下 载处下载:http://v_july_v.download.csdn.net/),故此,常有朋友留言或来信询问后面40题的案。只是 因个人认为:一、案只是作为一个参考,不可太过依赖;二、常常因一些事情耽搁(如在整理最新的今年 九月、十月份的面试题:九月腾讯,创新工场,淘宝等公司最新面试十三题、十月百度,阿里巴巴,迅雷搜狗 最新面试十一题);三、个人正在针对那100题一题一题的写文章,多种思路,不断优化,即成程序员编程 艺术系列。自此,后面40题的案迟迟未得整理。且个人已经整理的前60题的案,在我看来,是有诸多问 题与弊端的,甚至很多案都是错误的。 互联网总是能给人带来惊喜。前几日,一位现居美国加州的名叫阿财的朋友发来一封邮件,并把他自己 做的全部100题的案一并发予给我,自此,便似遇见了知己。十分感谢。 任何东西只有分享出来才更显其价值。本只需贴出后面40题的案,因为前60题的案本人早已整理上 传至网上,但多一种思路多一种参考亦未尝不可。特此,把阿财的案再稍加整理番,然后把全部100题的 案现今都贴出来。若有任何问题,欢迎不吝指正。谢谢。 上千上万的人都关注过此100题,且大都都各自贡献了自己的思路,或回复于微软100题维护地址上,或 回复于本博客内,人数众多,无法一一标明,特此向他们诸位表示敬意和感谢。谢谢大家,诸君的努力足以影 响整个互联网,咱们已经迎来一个分享互利的新时代。 感谢诸君,请享用.....

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧