c面试题 windows相关操作大全

上传人:小** 文档编号:88214868 上传时间:2019-04-21 格式:DOC 页数:19 大小:93.51KB
返回 下载 相关 举报
c面试题 windows相关操作大全_第1页
第1页 / 共19页
c面试题 windows相关操作大全_第2页
第2页 / 共19页
c面试题 windows相关操作大全_第3页
第3页 / 共19页
c面试题 windows相关操作大全_第4页
第4页 / 共19页
c面试题 windows相关操作大全_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《c面试题 windows相关操作大全》由会员分享,可在线阅读,更多相关《c面试题 windows相关操作大全(19页珍藏版)》请在金锄头文库上搜索。

1、指针与引用的区别: 引用必须被初始化,指针不必; 引用初始化后不能改变,指针可以改变所指的对象; 不存在指向空值的引用,但是存在指向空值的指针。1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已virtual可加可不加子类的空间里有父类的所有变量(static除外)同一个函数只存在一个实体(inline除外)子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里,有父类的私有变量。私有变量不能直接访问。2.输入一个字符串,将其逆序后输出。(使

2、用C+,不建议用伪码)#include using namespace std;void main()char a50;memset(a,0,sizeof(a);int i=0,j;char t;cin.getline(a,50,n);for(i=0,j=strlen(a)-1;it=ai;ai=aj;aj=t;coutastr;str.replace;coutstr;或者直接用STL里现成的算法,更省事,嘿嘿#include #include #include using namespace std;int main()string str;getline(cin,str);reverse(

3、str.begin(), str.end();coutstr Reversed:strendl;system(pause);return 0;/strendl;/str;/aa /= (k+m)*1*(k+m);=a = a/9;=a = 1;5.const 符号常量;(1)const char *p(2)char const *p(3)char * const p说明上面三种描述的区别;如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。(1)const char *p一个指向c

4、har类型的const对象指针,p不是常量,我们可以修改p的值,使其指向不同的char,但是不能改变它指向非char对象,如:const char *p;char c1=a;char c2=b;p=&c1;/okp=&c2;/ok*p=c1;/error(2)char const *p(3)char * const p这两个好象是一样的,此时*p可以修改,而p不能修改。错!const char *p应该与char const *p是一样的才对!此时*p不可修改,而p是可以修改的!(4)const char * const p这种是地址及指向对象都不能修改。6.下面是C语言中两种if语句判断方式

5、。请问哪种写法更好?为什么?int n;if (n = 10) / 第一种判断方式if (10 = n) / 第二种判断方式如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=7.下面的代码有什么问题?void DoSomeThing()char* p;p = malloc(1024); / 分配1K的空间if (NULL = p)return;p = realloc(p, 2048); / 空间不够,重新分配到2Kif (NULL = p)return;A:p = malloc(1024); 应该写成: p = (char *) malloc(1024);没有释放p的空间

6、,造成内存泄漏。8.下面的代码有什么问题?并请给出正确的写法。void DoSomeThing(char* p)char str16;int n;assert(NULL != p);sscanf(p, “%s%d”, str, n);if (0 = strcmp(str, “something”)A:sscanf(p, “%s%d”, str, n); 这句该写成: sscanf(p, “%s%d”, str, &n);由于str有限,如果输入的字符串过大,会引发堆栈溢出!9.下面代码有什么错误?Void test1()char string10;char *str1=”0123456789;

7、strcpy(string, str1);数组越界10.下面代码有什么问题?Void test2()char string10, str110;for(i=0; i10;i+)str1i =a;strcpy(string, str1);数组越界(以/0为拷贝界限)-11.下面代码有什么问题?Void test3(char* str1)char string10;if(strlen(str1)=10)strcpy(string, str1);=数组越界=strcpy拷贝的结束标志是查找字符串中的0 因此如果字符串中没有遇到0的话 会一直复制,直到遇到0,上面的123都因此产生越界的情况建议使用

8、strncpy 和 memcpy-12.下面代码有什么问题?#define MAX_SRM 256DSN get_SRM_no()static int SRM_no; /是不是这里没赋初值?int I;for(I=0;I=MAX_SRM)return (NULL_SRM);elsereturn SRM_no;系统会初始化static int变量为0,但该值会一直保存,所谓的不可重入13.写出运行结果:/ test1char str = “world”; cout sizeof(str) : ;char *p = str; cout sizeof(p) : ;char i = 10; cout

9、sizeof(i) : ;void *pp = malloc(10); cout sizeof(p) endl;6:4:1:4出自林锐博士的高质量C+编程,面试时见过N多次了,比较经典的题目。-14.写出运行结果:/ test2union V struct X unsigned char s1:2;unsigned char s2:3;unsigned char s3:3; x;unsigned char c; v;v.c = 100;printf(%d, v.x.s3);目前这个问题网上流行的答案有三个:1, 3, 4,在本人的机器上结果为3(VC7)struct X的位占用顺序为:低2位,

10、中3位,高3位,也就是说,union V的实际内容为0110 0100s3占用高3位,取值011,十进制为3。再补充一下,占用不满8位时,会截取低N位,如截取s2的低3位放入X的中间3位中。-15.用C+写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数A1:16位的系统下,int i = 65536;cout i; / 输出0;int i = 65535;cout i; / 输出-1;32位的系统下,int i = 65536;cout i; / 输出65536;int i = 65535;cout 65536 )cout32 bitendl;elsecout16 bitendl;也是比较经典的题目了!面试出现率较高!-16.C和C+有什么不同?从机制上:c

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号