版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#word格式支持编辑,如有帮助欢迎下载支持。{ASSERT(0);return;}*ppszBuf=(char*)malloc(BUFFER_SIZE);return;}voidTest(void){char*pszBuf=NULL;GetMemory(&pszBuf);strcpy(pszBuf,"helloworld\r\n");printf("%s",pszBuf);free(pszBuf);return;}下面说法正确的是():A、pszBuf的值永远为NULL;B、malloc内存后没有判断是否成功;C、strcpy拷贝越界;D、GetMemory无法将申请的内存地址传递给pszBuf;24、请问下面函数中1、2、3应该填入什么语句才合理?()A、不添,不添,不添B、free(pMsg);,free(ptmpMsg);,不添C、free(pMsg);,free(ptmpMsg);,free(ptmpMsg);D、不添,free(pMsg);,free(ptmpMsg);E、free(pMsg);,free(pMsg);,free(ptmpMsg);F、不添,不添,free(ptmpMsg);#defineCOMM_MSG_LEN100char*GetMessageBuffer(intmalloc_len){char*ptr=NULL;ptr=(char*)malloc(malloc_len)returnptr;}intFuncTest(void){intmalloc_len=COMM_MSG_LEN;char*pMsg=NULL;char*ptmpMsg=NULL;pMsg=GetMessageBuffer(malloc_len);if(NULL==pMsg){1___returnERROR;}fillMessage(pMsg);sendMessage(pMsg);ptmpMsg=GetMessageBuffer(malloc_len);if(NULL==ptmpMsg){2___returnERROR;}FillMessage(ptmpMsg);SendMessage(ptmpMsg);free(pMsg);3___returnOK;}以下叙述中不正确的是()在不同的函数中可以使用相同名字的变量函数中的形式参数是在栈中保存在一个函数内定义的变量只在本函数范围内有效在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)全局变量可以定义在被多个.C文件包含着的头文件中。()正确B.错误在函数内部定义的变量(静态变量、寄存器变量等特殊变量除外)的内存是在栈内存中,所以在定义函数内部的变量的时候,一定要保证栈不能够溢出。如果临时变量占用空间较大,应该使用内存申请的方式,这样该变量指向的内存就是在堆内存中了。()A.正确B.错误局部变量可以和全局变量重名,编译的时候不会出现错误,但一旦不小心,就可能导致使用错误变量,所以在定时局部变量的时候,不要和全局变量重名。()A.正确B.错误设有如下定义:unsignedlongpulArray[]={6,7,8,9,10};unsignedlong*pulPtr;则下列程序段的输出结果为()pulPtr=pulArray;*(pulPtr+2)+=2;
printf("%d,%d\n",*pulPtr,*(pulPtr+2));A)8,10B)6,8structstu{intnum;charname[10]intage;D)6,1030.C)7,9D)6,1030.};voidFun(structstu*p){printf("%s\n",(*p).name);return;}voidmain(){structstustudents[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};Fun(students+2);return;}Fun(students+2);return;}输出结果是()A)ZhangB)Zhao31.以下程序运行后,输出结果是(voidmain(){C)WangD)18char*szStr="abcde";szStr+=2;printf("%lu\n",szStr);return;B字符B字符c的ASCLL码值D出错"abcde"这个常串中字符c所在的地址设有以下宏定义:#defineN3#defineY(n)((N+1)*n)/*这种定义在编程规范中是不允许的,如果你在实际中这么用了,请自打手心三下*/:z+1));后,z的值为()C)48:z+1));后,z的值为()C)48D)54A)出错B)4233、有如下宏定义和结构定义#defineMAX_SIZEA+Bstruct_Record_Struct{:4;unsignedcharEnv_Alarm_ID:4;unsignedcharpara1:2;unsignedcharstate;unsignedcharavail:1;}*Env_Alarm_Record;pointer=(struct_Record_Struct*)malloc(sizeof(struct_Record_Struct)*MAX_SIZE);当A=2,B=3时pointer分配()个字节的空间。注意:机器是按照4字节对齐A)20B)15C)11D)934、请问下面题目中a,b,c输出值为多少?()A、10,210,30B、100,210,300C、110,210,310D、100,210,30E、110,200,30#include<stdio.h>#defineFUNC(A)A++;\A*=10;intmain(intargc,char*argv[]){inta=10;intb=20;intc=30;if(a>10)FUNC(a);if(b>=20)FUNC(b);if(c>30){FUNC(c);}printf("a=%d,b=%d,c=%d\r\n",a,b,c);return0;}35•在X86下,有下列程序#include<stdio.h>voidmain(){union{intk;chari[2];}*s,a;s=&a;s->i[0]=0x39;s->i[1]=0x38;printf("%x\n",a.k);}输出结果是()D)不可预知A)3839B)3938C)D)不可预知36、#defineMAX_MEM_SIZE100intGetMem(intiLen,void**ppMem){if(NULL==ppMem){return-1;}if(iLen<=0){return0;}elseif(iLen<MAX_MEM_SIZE){*ppMem=malloc(iLen);returniLen;}else{*ppMem=malloc(MAX_MEM_SIZE);returnMAX_MEM_SIZE;}}voidmain(){char*pMyMem;inti;intj;i=GetMem(i,(void**)&pMyMem);if(NULL!=pMyMem){for(j=0;j<i;j++){pMyMem[j]=0;}}}下面说法正确的有;()A、因为pMyMem未初始化,main函数中的GetMem可能会返回一1;B、因为i未初始化,main函数中GetMem可能会返回比MAX_MEM_SIZE大的值;C、因为pMyMem未初始化,for循环内的赋值操作可能会导致写内存异常;D、无论pMyMem,i,j为何值时,main函数内都不会出现写内存异常;37、#defineMAX_MEM_SIZE100intGetMem(intiLen,void**ppMem){if(iLen<0){return-1;}elseif(0==iLen){return0;}elseif(iLen<MAX_MEM_SIZE){*ppMem=malloc(iLen);returniLen;}else{*ppMem=malloc(MAX_MEM_SIZE);returnMAX_MEM_SIZE;}}voidmain(){char*pMyMem;inti,k;unsignedintj;j=GetMem(i,&pMyMem);if(j>0){for(k=0;k<i;k++){pMyMem[k]=0;}}}下面说法正确的有:A、只要将pMyMem初始化为NULL,可以避免main函数内的for循环出现写内存异常;B、虽然i和pMyMem均未初始化,只要将ifj>0)改为if((O〈j)&&j〈=MAX_MEM_SIZE)),可以避免出现for循环内写内存异常;C、虽然i和pMyMem均未初始化,只要将main函数内的for循环比较由k<i改为k〈j,可以避免出现for循环内写内存异常;D、上面三种说法都不对。二:多项选择题定义结构体时有下面几种说法,请指出正确的(多选):___A、结构体中的每个部分,最好进行四字节对齐;B、结构体的总长度最好是四字节对齐;C、结构中成员的存放不用考虑字节对齐情况;Ox在采用BigEndian中内存的排列顺序是,在采用LittleEndian内存中的排列顺序是(答案从左到右内存地址依次增加)12345678B.3412785678563412D.56781234下面程序期望输出str=helloworld:char*GetStr(char*p){p="helloworld";returnp;}voidmain(){char*str=NULL;if(NULL!=GetStr(str)){printf("\r\nstr=%s",str);}return;}下面描述正确的是:A、str始终为NULL;B、函数GetStr返回值始终不为空;C、该程序无法得到预期的输出结果,因为GetStr函数无法将字符串地址带给实参;4、下面程序期望得到g_Variable的值,并打印出来。unsignedcharg_Variable;voidGetGlobalAddr(unsignedchar*p){p=&g_Variable;}voidmain(){unsignedchar*temp=NULL_PTR;GetGlobalAddr(temp);printf("\r\nGotglobalvariablevalue=%u",*temp);return;}下面说法正确的是():A对P强制类型转换错误;B调用函数时,局部变量P存在于栈中;Cp值的改变不会影响temp;D调用函数后,temp的值被改变为g_Variable的地址。5、#defineMAX_LEN2UC*ConvertCode(UC*pByte,UCnum){ULi=0;UCstrTemp[MAX_LEN];if(NULL==pByte){returnNULL;}memcpy(strTemp,pByte,MAX_LEN);return(UC*)strTemp;}voidmain(void){UCstr[MAX_LEN];UC*p;str[0]=0x12;str[1]=0x34;p=ConvertCode(str,sizeof(str));printf("%s",p);return;}下面查错的说明中,描述正确的是():A、输入参数p_byte为空指针B、函数ConvertCode返回值没有判断C、没有判断p_byte指向空间和MAX_LEN的大小D、返回局部变量地址下列定义正确的有(多选):()A:char*pcPtr="abcd";B:charpc[4]="abcd";C:charpc[]="abcd";D:charpc[]='abcd';E:charpc[]={'a','b','c','d','\0'};F:charpc[]='a''b''c''d';7.voidGetMemory(char**ppcChar,intiLength){if(NULL==ppcChar){return;}*ppcChar=(char*)malloc(iLength);return;}voidmain(intargc,char*argv[]){char*szStr=NULL;intiLen=100;GetMemory(&szStr,iLen);if(NULL!=szStr){strcpy(szStr,"hello");printf(szStr);}return;}下面描述正确的是():A、iLength应该判断是否大于0;B、程序中使用魔鬼数字;C、当szStr不为空时,没有释放分配的内存;D、printf(szStr)无法输出字符串请指出下面程序问题#defineMAX_LEN254unsignedcharArray[MAX_LEN];intTest(void){inti;for(i=0;i<=MAX_LEN;i++){Array[i]=i;}return;}下面说法正确的是():A、i=MAX_LEN时,数组越界B、argv参数形式错误C、i=MAX_LEN时,赋值溢出D、return无返回值9、#include<stdio.h>#include<malloc.h>#include<string.h>#defineMAX_MSG_LEN2048BOOLMaxMsgFlag=FALSE;char*GetBuffer(intmsg_len){char*ptr=NULL;intlen=msg_len;ptr=(char*)malloc(len);if(NULL==ptr){returnNULL;}returnptr;}intmain(intargc,char*argv[]){intmsg_len;char*pMsg;if(TRUE==MaxMsgFlag){msg_len=MAX_MSG_LEN;}pMsg=getBuffer(msg_len);if(NULL!=pMsg){strcpy(pMsg,"Ilovethisgame!");printf("%s",pMsg);free(pMsg);}return0;}上面的程序存在问题,下面描述正确的是()A、函数getBuffer应该判断入参msg_len是否大于0。B、按照编程规范,函数main中pMsg应该赋初值C、函数main中msg_len没有赋初值三:填空题1.char*pcColor="blue1";characColor[]="blue1";strlen(pcColor)=strlen(acColor)=sizeof(pcColor)=sizeof(acColor)=2.charstr[]="\\\0";char*p=str;intn=1000;请计算sizeof(str)=sizeof(p)=sizeof(n)=3.UCHAR*pucCharArray[10][10];typedefunionunRec{ULONGulIndex;USHORTusLevel[6];UCHARucPos;}REC_S;REC_SstMax,*pstMax;四字节对齐方式时:sizeof(pucCharArray)=,sizeof(stMax)=,sizeof(pstMax)=,sizeof(*pstMax)=.4.UCHAR*pszTest="hello";UCHARaucTest[]="hello";请问sizeof(pszTest)=,sizeof(*pszTest)=,sizeof(aucTest)=typedefstructtagTest{UCHARucFlag;ULONGulLen;}TEST_S;TEST_Stest[10];四字节对齐方式时:sizeof(TEST_S)=__8___,sizeof(test)___80___.typedefunionunHead{UCHARaucSrc[6];structtagContent{UCHARucFlag[3];ULONGulNext;//}Content;}HEAD_S;32CPU,VC编译环境下:TOC\o"1-5"\h\z在强制一字节对齐情况下,请指出sizeof(HEAD_S)=7_;在强制二字节对齐情况下,请指出sizeof(HEAD_S)=__6;在强制四字节对齐情况下,请指出sizeof(HEAD_S)=___8;structBBB{longlNum;4char*pcName;4shortsDate;2charcHa[2];2shortsBa[6];6+2}*p;p=0x100000;p+0x1=0x_100014___(unsignedlong)p+0x1=0x_100004(unsignedlong*)p+0x1=0x100004(char*)p+0x1=0x_100004在4字节对齐的情况:typedefstructtagRec{longlA1;4charcA2;4charcA3;4longlA4;4longlA5;4}REC_S;voidmain(intargc,char*argv[]){REC_SstMax;printf("sizeof(stMax)=%d",sizeof(stMax));return;}输出结果为:sizeof(stMax)=___20_9.structtagAAAunsignedcharucId:1;4unsignedcharucPara0:2;4unsignedcharucState:6;8unsignedcharucTail:4;4unsignedcharucAvail;4unsignedcharucTail2:4;4unsignedlongulData;4}AAA_S;问:AAA_S在字节对齐分别为1、4的情况下,占用的空间大小是多少?1932#pragmapack(4)/*编译选项,表示4字节对齐*/intmain(intargc,char*argv[]){structtagTest1{shorta;4chard;4longb;4longc;416};structtagTest212{longb;4shortc;2chard;2longa;4};structtagTest3{shortc;4longb;4chard;4longa;4};structtagTest1stT1;structtagTest2stT2;structtagTest3stT3;sizeof(stT3));printf("%d%d%d",sizeof(stT1),sizeof(stT2),return0;sizeof(stT3));}#pragmapack()(编译选项结束)请问输出结果是:16,12,16uniontagAAAA{struct{charucFirst;shortusSecond;charucThird;}half;longlI;}number;structtagBBBB{charucFirst;shortusSecond;charucThird;shortusForth;}half;structtagCCCC{struct{charucFirst;shortusSecond;charucThird;}half;longlI;};在字节对齐为1下,sizeof(uniontagAAAA)、izeof(struettagBBBB)、izeof(struettagCCCC)是在字节对齐为4下,sizeof(uniontagAAAA)、sizeof(struettagBBBB)、sizeof(struettagCCCC)是以下程序的输出的结果是#pragmapack(4)/*四字节对齐*/intmain(intarge,ehar*argv[]){unsignedeharpue[4];struettagPIM{unsignedeharuePim1;unsignedeharueData0:1;unsignedeharueData1:2;unsignedeharueData2:3;}*pstPimData;pstPimData=(struettagPIM*)pue;memset(pue,0,4);//此时内存情况为://ucPim1(8bits)->puc[0]////pstPinData->00000000<-pue[0]//对应pue[1]中的编号:ucData0->8;ueDatal->6、7;ueData2->3、4、5//编号://00000000<-pue[1]//00000000<-pue[2]//00000000<-pue[3]pstPimData—>ucPiml=1;//执行完此步后,内存状况为://pstPinData->00000001<-puc[0]//00000000<-puc[1]//00000000<-puc[2]//00000000<-puc[3]pstPimData->ucData0=2;//执行完此步后,内存状况为://pstPinData->00000001<-puc[0]//00000000<-puc[1]//因
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洛阳职业技术学院《城市设计概论》2023-2024学年第一学期期末试卷
- 2025其他伤害个体砖厂与农民工签订“生死合同”案
- 2024年度商品混凝土供货与施工安全监管合同3篇
- 社区安全防护指南
- 墙面手绘施工合同餐饮店
- 技术管理质量管理办法
- 铁路道口安全管理办法
- 2024年度艺术品买卖合同担保与鉴定评估服务条款3篇
- 项目执行沟通管理手册
- 2024年槽罐车液态化学品运输安全合同
- 知道智慧网课《会计学原理》章节测试答案
- 教科版五年级上册科学期末测试卷及参考答案(完整版)
- 《道德经》的智慧启示智慧树知到期末考试答案2024年
- 失禁性皮炎指南ppt课件
- 曲线运动课件
- 《阅读》校本课程课程纲要
- 组合数学讲义 2章 母函数
- 施工图审查意见告知书
- 冀教版六年级上册总结连词成句
- 砌体样板验收汇报报告 (5)
- 机械原理课程设计巧克力糖自动包装机
评论
0/150
提交评论