#include <stdio.h>
int main()
{
int intArray[] = {1, 2, 3, 4, 5};
int *p = (int *)(&intArray+1);
printf("%d,%d",*(intArray+1),*(p-1));
return 0;
}
答案:2,5。 8. 在64位系统中,有如下类:
class C
{
public:
char a;
static char b;
void *p;
static int *c;
virtual void func1();
virtual void func2();
};
那么sizeof(C)的数值是()
答案:24 。分析:sizeof(类)计算的是类中存在栈中的变量的大小,而类中的b和*c都是static静态变量,存在全局区中,因此不在计算范围之内,于是只剩下char a,void *p和两个virtual虚函数,a是char类型,占用一个字节,p是指针,在64位系统的指针占用8个字节,而两个虚函数只需要一个虚函数表指针,也是八个字节,加上类中的对齐方式(char a对齐时后面补上7个字节),故答案为24。 9. What is sizeof(desc_t)?
For a CPU with 32-bit addresses and 32-bit integers, we have the following code:
typedef struct data_ {
int a[10];
} data_t;
typedef struct descriptor_ {
data_t *ptr;
char data[0];
} desc_t;
答案:4。 10. 在64位操作系统上,下面程序返回什么结果:
int main() {
int *k[10][30];
printf(""%d\n"", sizeof(k));
return 0;
}
#include <iostream>
using namespace std;
class D{
int d;
public:
D(int x=1):d(x){}
~D(){cout<<"D";}};
int main(){
D d[]={_____________};
D* p=new D[2];
delete[]p;
return 0;
}