推荐精心整理的关于c语言常考的笔试题优秀word范文 9页.docx
- 文档编号:11091419
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:10
- 大小:17.59KB
推荐精心整理的关于c语言常考的笔试题优秀word范文 9页.docx
《推荐精心整理的关于c语言常考的笔试题优秀word范文 9页.docx》由会员分享,可在线阅读,更多相关《推荐精心整理的关于c语言常考的笔试题优秀word范文 9页.docx(10页珍藏版)》请在冰豆网上搜索。
推荐精心整理的关于c语言常考的笔试题优秀word范文9页
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
==本文为word格式,下载后可方便编辑和修改!
==
精心整理的关于c语言常考的笔试题
一、想说一说关于集中数据类型的sizeof问题,这题出现率40%
sizeof就是求在内存总占多少字节的问题,最基本的char1字节short2字节int4字节
任何的指针都是4字节sizeof(数组名)=数组占的大小(这里必须注意虽然数组名可作为只想数组首地址的指针,但是sizeof(数组名)求得的不是指针的大小,而是数组大小)
还有就是sizeof(结构体)sizeof(联合体)
举两个例子structstu{
Chara;
Intb;
Charc;
};
structteacher{
Chara;
Charc;
Intb;
};
Sizeof(stu)=12;内存中这样存储char空空空intchar空空空
内存4字节对其问题
Sizeof(teacher)=8;内存中这样存储charchar空空int
关于联合体
Unionstd{
Chara[10];
Intb[3];
}
Sizeof(std)=12;联合体公用内存,取其中所占内存最大的元素为联合体所占内存
以下为WindowsNT下的32位C++程序,请计算sizeof的值
charstr[]=“Hello”;
char*p=str;
intn=10;
1.请计算
sizeof(str)=6
sizeof(p)=4
sizeof(n)=4
voidFunc(charstr[100])
{
请计算
sizeof(str)=4
}
void*p=malloc(100);
请计算
sizeof(p)=4
还有位段的问题如下
分析:
structbit
{inta:
3;
intb:
2;
intc:
3;
};
intmain()
{
bits;
char*c=(char*)&s;
cout<
*c=0x99;
cout< inta=-1; printf("%x",a); return0; } 输出为什么是 4 1 -1 -4 ffffffff 因为0x99在内存中表示为10011001,a=001,b=11,c=100 当c为有符合数时,c=100,最高1为表示c为负数,负数在计算机用补码表示,所以c=-4;同理 b=-1; 当c为有符合数时,c=100,即c=4,同理b=3 位域: 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。 例如在存放一个开关量时,只有0和1两种状态,用一位二进位即可。 为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。 所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。 每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。 一、位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为: struct位域结构名 {位域列表}; 其中位域列表的形式为: 类型说明符位域名: 位域长度 例如: structbs { inta: 8; intb: 2; intc: 6; }; 位域变量的说明与结构变量说明的方式相同。 可采用先定义后说明,同时定义说明或者直接说明这三种方式。 例如: structbs { inta: 8; intb: 2; intc: 6; }data; 说明data为bs变量,共占两个字节。 其中位域a占8位,位域b占2位,位域c占6位。 对于位域的定义尚有以下几点说明: 1.一个位域必须存储在同一个字节中,不能跨两个字节。 如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。 也可以有意使某位域从下一单元开始。 例如: structbs { unsigneda: 4 unsigned: 0/*空域*/ unsignedb: 4/*从下一单元开始存放*/ unsignedc: 4 } 在这个位域定义中,a占第一字节的4位,后4位填0表示不使用,b从第二字节开始,占用4位,c占用4位。 2.由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。 3.位域可以无位域名,这时它只用来作填充或调整位置。 无名的位域是不能使用的。 例如: structk { inta: 1 int: 2/*该2位不能使用*/ intb: 3 intc: 2 }; 从以上分析可以看出,位域在本质上就是一种结构类型,不过其成员是按二进位分配的。 位域的使用位域的使用和结构成员的使用相同,其一般形式为: 位域变量名•位域名位域允许用各种格式输出。 main(){ structbs { unsigneda: 1; unsignedb: 3; unsignedc: 4; }bit,*pbit; bit.a=1; bit.b=7; bit.c=15; pri 二、关于动态申请内存的问题这题出现率极高,60%不为过 voidGetMemory(char*p) { p=(char*)malloc(100); } voidTest(void) { char*str=NULL; GetMemory(str); strcpy(str,"helloworld"); printf(str); } 请问运行Test函数会有什么样的结果? 答: 试题传入GetMemory(char*p)函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完 char*str=NULL; GetMemory(str); 后的str仍然为NULL; char*GetMemory(void) { charp[]="helloworld"; returnp; } voidTest(void) { char*str=NULL; str=GetMemory(); printf(str); } 请问运行Test函数会有什么样的结果? 答: 可能是乱码。 charp[]="helloworld"; returnp; 的p[]数组为函数内的局部自动变量,在函数返回后,内存已经被释放。 这是许多程序员常犯的错误,其根源在于不理解变量的生存期。 voidGetMemory2(char**p,intnum) { *p=(char*)malloc(num); } voidTest(void) { char*str=NULL; GetMemory(&str,100); strcpy(str,"hello"); printf(str); } 请问运行Test函数会有什么样的结果? 答: (1)能够输出hello (2)Test函数中也未对malloc的内存进行释放。 (3)GetMemory避免了试题1的问题,传入GetMemory的参数为字符串指针的指针,但是在GetMemory中执行申请内存及赋值语句 *p=(char*)malloc(num); 后未判断内存是否申请成功,应加上: if(*p==NULL) { ...//进行申请内存失败处理 } voidTest(void) { char*str=(char*)malloc(100); strcpy(str,“hello”); free(str); if(str! =NULL) { strcpy(str,“world”); printf(str); } } 请问运行Test函数会有什么样的结果? 答: 执行 char*str=(char*)malloc(100); 后未进行内存是否申请成功的判断;另外,在free(str)后未置str为空,导致可能变成一个“野”指针,应加上: str=NULL; 三、基本关键字的提问 常考的 Staticexternvolatileconstregister register是把一个变量声明为寄存器变量,和auto相对,auto是让编译器自动决定那些变量放在寄存器里,显然让编译器去决定更合理,所以这个关键字不常用,而声明变量时不写auto的话则自动会成为auto变量,inta;和autointa;效果是一样的,这两个只需要了解。 以下文字仅用于测试排版效果,请使用时删除! 冬是清寒的。 站在有风的地方,悄然回首,看见来时的路。 一路有花的娇艳,有草的青葱,有树的挺拔,有鸟的鸣叫。 抬起头,天空蓝的清澈。 风起时,有笑颜。 冬,是寂寞的。 万物都归于沉静中,孕育着来年的昌盛。 隐忍才是最有力的,也因此,寂寞的冬天给人以太多的幻想与渴望。 会去渴望温暖的一炉壁火,也会想要一个温暖的怀抱。 围炉煮雪,相拥着取暖。 习惯了把心情种在寂寞里过冬,深耕一陇陌上的花开。 等待着,下一季的盛景。 不会忘记冬的情怀,圣诞节的钟声会敲响,冬有自己的辉煌。 静静的写下一首小诗,待到花开时,扦插在那枝头,为冬吟。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 推荐精心整理的关于c语言常考的笔试题优秀word范文 9页 推荐 精心 整理 关于 语言 笔试 优秀 word 范文