C语言—每日选择题—Day54
指针相关博客
第一题
1. 存在int类型变量x,y,z,其对应值为x=0x59,y=0x39,z=0x6E,则x * y + z的值为()
A:1 0010 0111 0011
B:1 0100 0011 1111
C:1 0010 0111 0111
D:1 0110 0111 1111
答案及解析 B?
本题考查进制之间的转换
x = 0x59 = 5*16 + 9*1 = 89;
y = 0x39 = 3*16 + 9*1 = 57;
z = 0x6E = 6*16 + 14*1 = 110;
x * y + z = 89*57 + 110 = 5183
二进制为:1 0100 0011 1111
第二题
2. 在64位机器上用gcc编译以上代码,求sizeof(struct A),sizeof(struct B)分别是多少()
struct A
{
int a;
short b;
int c;
char d;
};
struct B
{
short b;
int c;
char d;
};
A:12 16
B:12 12
C:16 24
D:16 12
答案及解析 D
本题考查内存对齐规则,直接上博客,看完就懂
第三题
3. 如下函数的f(1)的值为()
int f(int n)
{
static int i = 1;
if(n >= 5)
return n;
n = n + i;
i++;
return f(n);
}
A:5
B:6
C:7
D:8
答案及解析 C
本题考查的是函数递归和static变量
首先局部static变量,只会初始化一次,存放在静态区;
所以i的值是一直增加的;
第四题
4. 32位系统下,对于下面的结构体A和B,sizeof(A),?sizeof(B)的结果分别是()
#include <stdio.h>
#pragma pack(2)
struct A
{
int a;
char b;
short c;
};
#pragma pack()
#pragma pack(4)
struct B
{
char b;
int a;
short c;
};
#pragma pack()
int main()
{
printf(“%d %d\n”,sizeof(struct A),sizeof(struct B));
return 0;
}
A:8,8
B:8,10
C:8,12
D:7,8
答案及解析 C
????????这里涉及的是设置默认对齐数,设置的默认对齐数依旧是要和我们变量的自身对齐数做比较的,之后变量占的字节空间是自身的大小
第五题
5. 以下能对二维数组a进行正确初始化的语句是(????????)
A:int a[2][ ]=({1,0,1},{5,2,3});
B:int a[ ][3]={{1,2,3},{4,5,6}};
C:int a[2][4]=({1,2,3},{4,5},{6});
D:int a[ ][3]={(1,0,1)(),(1,1)};
答案及解析 B
本题考查的是对二维数组的初始化
记住下面几点:
1. 必须显示地写出列,可以省略行,不可以省略列;
2. 不可以用空括号,可以用空大括号。
3. 千万别定义越界
4. 没有初始化到的默认为0
A:错误,省略了列;
B:正确,表示的是两行三列的二维数组;
C:错误,明确指出是两行,后面越界了
D:错误,这里注意是小括号,就是逗号表达式;int a[][3] = {1,(),1};但是不可以是空括号!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!