没有合适的资源?快使用搜索试试~ 我知道了~
首页C++笔试题汇总(含答案与分析)
资源详情
资源评论
资源推荐
C++ 笔试题目汇总
摘自:
http://blog.csdn.net/baimafujinji/article/details/6485777
1:
void *memset(void *s, int ch,size_tn);
总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 ch。
memset 这个函数主要用以清除 C 语言中的指针指向的内存,包括常规变量和结构体等。
注意:不能用于对 C++类对象的清空,会出问题。
常用如:
Char a[15];
Memset(a,0,15*sizeof(char));
或
Struct mystruct
{
Int a;
Int b;
} b;
Memset(&b,0,sizeof(mystruct));
2:strlen(char*)
这是个函数,得到字符串的长度(以 00 为结束)。区别于 sizeof(),sizeof 是算符(如同+,-,*,/),可以用类型
做参数。
Char a[20] = 0123456789;
Strlen(a) = 10;
Sizeof(a) = 20 = 20* sizeof(char);
:请简单描述操作系统的内存管理方法。
因操作系统中程序太多,引入了虚拟内存管理。当运行时才 入物理内存。
内存管理有块式管理,页式管理,段式和段页式管理。现在常用段页式管理。
4:宏定义是不经过算法规则的,只是简单替换而已!
#defineSQR(X)X*X
a=SQR(k+m)/SQR(k+m);
实际值是:a=
:符号常量
指向常量字符的指针。
常量指针指向任意字符
:两种 语句判断方式。请问哪种写法更好?
1. if(n==10)//第一种判断方式••
2. if(10==n)//第二种判断方式••
第二种好,==若漏写成=会编译出错。(第一种不会报错,因为会判为赋值)
7:内存管理标准用法:
1. int*number;
2. number=(int*)malloc(sizeof(int));
3. number=(int*)realloc(number,3*sizeof(int));
4. free(number);//用完之后要 free,释放内存••
void* malloc (size_t size);
void* realloc (void* ptr, size_t size);
void free (void* ptr);
这几个函数都需要强制转换类型(int *)等,因为开辟后的空间是 void。
开辟后必须使用 free 释放空间,否则会内存泄漏。
8:
Void test2()
{
char string[10], str1[10];
for(i=0; i <10;i++)
{
str1[i] = 'a ';
}
strcpy(string, str1);
}
报错:数组越界。
原因:strcpy 这个函数的规则是:遇到 str1 中字符为’\0’为止。而 str1 没有’\0’,明显会一直下去,远超过 string
的长度。根源其实就是,strcpy 只用于标准 C 字符串的操作,其他 strcmp,strlen 等也一样。同时 strlen 不包
括’\0’。
9:在不用第三方参数的情况下,交换两个参数的值
1. inti=60;
2. intj=50;
3. i=i+j;
4. j=i-j;
5. i=i-j;
10:不可重入函数
Void add(int a)
{
Static int b = 0;//static 一定要赋初值
…
}
函数中含有 static 变量都是不可重入函数。(即再次进入, b 值是变化的),区别于常规的可重入函数。
11:sizeof 对指针本身的内存
32 位系统指针都只占 4 字节。64 位系统指针都只占 8 字节。
典型的比如:
char a[20] = "0123456789";
char* b = a;
sizeof(a) 等于 20;
sizeof(b) 等于 4 或 8;
由此可见,数组名并不是完全等同于指针。
注意区别:指针本身的长度和指针指向内存的大小。
但是作为函数形参时,不管什么样式,都只传递指针。
如:fun(char a[20])==fun(char a[]) == fun(char *a);所以 sizeof(a)都等于 4.
12:求 2 进制数方法?(其他进制类似)
除后求余,所有余数连起来即可。
100 为例:
100/2 余 0,50/2 余 0,25/2 余 1,12 除 2 余 0,6 除 2 余 0,3 除 2 余 1,1 除 2 余 1.
即:1100100
13:结构体位段定义方法:
1. structX
2. {
3. unsignedchars1:2;//占 2 位
4. unsignedchars2:3;//占 3 位
5. unsignedchars3:3;//占 3 位
6. }x;
14:int,float,double 不同系统所占字节(8 位):
16 位系统:2,4,8;( int 最大值 2 的 16 次方=65536)
32 位系统:4,4,8;( 32 位以后,int 都是 4 个字节了)
64 位系统:4,4,8;( 不管什么系统,单精度浮点型和双精度浮点型都是 4 和 8)
15:•是不是类型安全的?
不是。两个不同类型的指针之间可以强制转换(用 。!是类型安
全的
:函数执行以前,还会执行什么代码?
全局对象的构造函数会在 函数之前执行
同理:全局对象的析构函数会在 函数之后执行;
因为: 函数前后,有调用初始化工作和释放内存工作机制。
17:%x 十六进制形式 %o 八进制形式 %e 指数形式输出
A 十进制 65 十六进制 41
a 十进制 97 十六进制 61
18:static 函数
只作用于当前文件内。
19:进程间通信的方式有:共享内存,•管道•," ,消息队列•#$$% 等
20 : 试 编 写 函 数 判 断 计 算 机 的 字 节 存 储 顺 序 是 开 序 还 是 降 序
&' ?
1. boolIsBigendian()
2. {
3. unsignedshortusData=0x1122;
4. unsignedchar*pucData=(unsignedchar*)&usData;
5. return(*pucData==0x11);
6. }
针对数据 ()*&开序( ),从低位到高位存储( ()(((((((( 地址•起始保存:+,&+,*+
,)。
降序(&')则从高位数到低位数逐渐存储同上地址开始:+,*+,&+,。
目前大部分电脑都是开序存储方式(也就是先低位后高位)。
:))-)+的作用:二进制不断从低位去 。
:倒着输出整数的方法:除 (,输出余数,结果继续递归的方法。
:当一个类•.中没有声明任何成员变量与成员函数,这时 / .的值是多少,
如果不是零,请解释一下编译器为什么没有让它为零。
答:一个空类对象的大小是 &0 。这是被编译器安插进去的一个字节,这样就使得
这个空类的两个实例得以在内存中配置独一无二的地址。
*:*1优先权问题:是作用于 1。2在
语言 标准中,并没有结合性的说法。
相同优先级运算符,从左至右依次运算。注意后
缀运算优先级高于前缀。如:应解释为。3
: 4 对数组时的操作:
剩余15页未读,继续阅读
freeman8
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0