本文主要是介绍C语言—每日选择题—Day54,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
指针相关博客
打响指针的第一枪:指针家族-CSDN博客
深入理解:指针变量的解引用 与 加法运算-CSDN博客
第一题
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
本题考查内存对齐规则,直接上博客,看完就懂
C/C++内存对齐规则(结构体、联合体、类)-CSDN博客
第三题
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
这里涉及的是设置默认对齐数,设置的默认对齐数依旧是要和我们变量的自身对齐数做比较的,之后变量占的字节空间是自身的大小
C/C++内存对齐规则(结构体、联合体、类)-CSDN博客
第五题
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};但是不可以是空括号!
这篇关于C语言—每日选择题—Day54的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!