快速业务通道

C++经典面试题

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
nsigned blink   : 1; // ?0000000 00000000
} screen[25][80];    // Array of bit fields

二、位结构

位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构

比按位运算符更加方便。

位结构定义的一般形式为:

struct位结构名{
     数据类型 变量名: 整型常数;
     数据类型 变量名: 整型常数;
   } 位结构变量;

其中: 数据类型必须是int(unsigned或signed)。 整型常数必须是非负的整

数, 范围是0~15, 表示二进制位的个数, 即表示有多少位。

变量名是选择项, 可以不命名, 这样规定是为了排列需要。

例如: 下面定义了一个位结构。

struct{
     unsigned incon: 8; /*incon占用低字节的0~7共8位*/
     unsigned txcolor: 4;/*txcolor占用高字节的0~3位共4位*/
     unsigned bgcolor: 3;/*bgcolor占用高字节的4~6位共3位*/
     unsigned blink: 1; /*blink占用高字节的第7位*/
   }ch;

位结构成员的访问与结构成员的访问相同。

例如: 访问上例位结构中的bgcolor成员可写成:

ch.bgcolor

注意:

1. 位结构中的成员可以定义为unsigned, 也可定义为signed, 但当成员长度为1时, 会被认为是unsigned类型。因为单个位不可能具有符号。

2. 位结构中的成员不能使用数组和指针, 但位结构变量可以是数组和指针,

如果是指针, 其成员访问方式同结构指针。

3. 位结构总长度(位数), 是各个位成员定义的位数之和, 可以超过两个字

节。

4. 位结构成员可以与其它结构成员一起使用。

例如:

struct info{
     char name[8];
     int age;
     struct addr address;
     float pay;
     unsigned state: 1;
     unsigned pay: 1;
     }workers;

上例的结构定义了关于一个工人的信息。其中有两个位结构成员, 每个位结

构成员只有一位, 因此只占一个字节但保存了两个信息, 该字节中第一位表示工

人的状态, 第二位表示工资是否已发放。由此可见使用位结构可以节省存贮空间。

--------------------------------------------------------------------------

22.下面的函数实现在一个固定的数上加上一个数,有什么错误,改正

int add_n(int n)
{
 static int i=100;
 i+=n;
 return i;
}

答:

因为static使得i的值会保留上次的值。

去掉static就可了

--------------------------------------------------------------------------

23.下面的代码有什么问题?

class A

{
public:
 A() { p=this; }
 ~A() { if(p!=NULL) { delete p; p=NULL; } }
 A* p;
};

答:

会引起无限递归

--------------------------------------------------------------------------

24.

union a {
int a_int1;
double a_double;
int a_int2;
};
typedef struct
{
a a1;
char y;
} b;
class c
{
double c_double;
b b1;
a a2;
};

输出cout<<sizeof(c)<<endl;的结果?

答:

VC6环境下得出的结果是32

另:

我(sun)在VC6.0+win2k下做过试验:

short - 2

int-4

float-4

double-8

指针-4

sizeof(union),以结构里面size最大的为union的size

解析C语言中的sizeof

一、sizeof的概念 

sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。

二、sizeof的使用方法 

1、用于数据类型

sizeof使用形式:sizeof(type)

数据类型必须用括号括住。如sizeof(int)。

2、用于变量 

sizeof使用形式:sizeof(var_name)或sizeof var_name 

变量名可以不用括号括住。如sizeof (var_name),sizeof var_na

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号