C++面试题大全

2011-03-19 00:28:14|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++|来源:唯设编程网

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

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;
};

答:

会引起无限递归

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

发表评论0条 】
网友评论(共?条评论)..
C++面试题大全