您的位置:首页 > 职场人生

最近面试的一些题

2012-07-04 23:48 274 查看
1.数据库回滚操作 sql语句

2.

输出下面程序的运行结果

View Code

#include <stdio.h>

int main() {

struct aa { int a; int b; }aa;

union bb { int a; int b; }bb;

aa.a = 1; aa.b = 2;

bb.a= 3; bb.b = 5;

printf("%d %d\n",aa.a,aa.b);

printf("%d %d\n",bb.a,bb.b);

return 0; }


 共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。

看一下对应的汇编代码,发现第25,26行都是对[ebp-0Ch] 进行赋值,即下面一个是进行重新赋值!

22:     aa.a = 1;

00401028   mov         dword ptr [ebp-8],1

23:     aa.b = 2;

0040102F   mov         dword ptr [ebp-4],2

24:

25:     bb.a= 1;

00401036   mov         dword ptr [ebp-0Ch],1

26:     bb.b = 51;

0040103D   mov         dword ptr [ebp-0Ch],33h

27:

28:

29:     printf("%d %d\n",aa.a,aa.b);


3. 输出下面的结果

#include <stdio.h>

int main()

{

int a[] = {1,2,3,4,5,6,7,8};

char * p = (char *)a;

p = p +4;

printf("%d %d",*(a+4),*(int *)p);

return 0;

}


4.下面这个程序编译有没有问题,如果有,请指出来!

#include <iostream>
using namespace std;

class A
{

public :
virtual int  f()
{
cout<<"1"<<endl;
return 1;

}

void g()
{
f();
}

};

class B  :public A
{
public:
virtual int f()
{
cout<<"2"<<endl;
return 2;
}

};

int main()
{
B  o;
o.g();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: