求两道面试题答案

来源:百度知道 编辑:UC知道 时间:2024/05/17 07:39:36
写出运行结果:
1.{// test1
char str[] = "world"; cout << sizeof(str) << ": ";
char *p = str; cout << sizeof(p) << ": ";
char i = 10; cout << sizeof(i) << ": ";
void *pp = malloc(10); cout << sizeof(p) << endl;
}
2.struct A
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
}
sizeof(A)=?(不考虑边界对齐)

1.
char str[] = "world"; cout << sizeof(str) << ": ";
-求的是"world"字符串所占字节,是5个+1个'\0'=6字节

char *p = str; cout << sizeof(p) << ": ";
-求的是p指针所占字节,指针固长是4字节

char i = 10; cout << sizeof(i) << ": ";
-求的是char类型的i所占字节,char型占1字节

void *pp = malloc(10); cout << sizeof(p) << endl;
-求的是pp指针所占字节,同2号,也是指针固长4字节
}

2.sizeof(A)=?(不考虑边界对齐)
-char(1字节)+char(1字节)+shor(2字节)+long(4字节)=8字节

1.
6: 4: 1 :4

2.
6

第一道题1、考虑字符串的结尾符,则其长度为5+1;
2、指针是一个地址其长度为4;
3、整形长度为1;
4、同2,也是一个指针;
第二道题应该为8。