C语言入门必做踩坑题《篇四》
Posted 跳动的bit
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言入门必做踩坑题《篇四》相关的知识,希望对你有一定的参考价值。
第1题
🎗若有定义: int a[ ] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24}, *q[4], k; 则下面的程序段输出的结果是 ( )
for(k=0; k<4; k++){
q[k] = &a[k*3];
}
printf("%d\\n",q[3][1]);
A. 18
B. 22
C. 20
D. 输出项不合法,结果不正确
📝 分析:
此题考查的是指针和数组的知识:
int* q[4]; q 是一个数组有4个元素,每个元素的类型是int*
所以选择 B 选项
第2题
🎗test.c 文件中包括如下语句:则文件中定义的四个变量,哪个变量不是指针类型 ( )
#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;
A. a
B. b
C. c
D. d
📝 分析:
此题虽然不难,但是有坑 🕳
1️⃣ #define 定义的符号是完全替换的
2️⃣ typedef 是类型重命名
所以选择 B 选项
第3题
🎗 表达式 0x13&0x17, 0x13|0x17 的值分别是多少 ( )
A. 0x17 ; 0x13
B. 0x13 ; 0x17
C. 0xF8 ; 0xE8
D. 0xEc ; 0xC8
📝 分析:
此题考查的主要是进制之间的转换:
所以选择 B 选项
第4题
🎗 在 VS2013 下,这个结构体所占的空间大小是____字节
typedef struct
{
int a;
char b;
short c;
short d;
}AA_t;
A. 16
B. 9
C. 12
D. 8
📝 分析:
对于结构体是如何计算大小有如下规则:
❗ 这个规则就是结构体内存对齐 ❕
▶ 第1个成员在与结构体变量偏移量为0的地址处
▶ 其它成员变量要对齐到某个数字 (对齐数) 的整数倍的地址处。对齐数 = 编译器默认的一个对齐数与该成员大小的较小值。VS中默认对齐数是8; Linux没有默认对齐数,它是按照自身大小来对齐的
▶ 结构体总大小为最大对齐数 (每个成员变量都有一个对齐数) 的整数倍
▶ 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍,结构体的整体大小就是所有最大对齐数 (含嵌套结构体的对齐数) 的整数倍
❗ 图示 ❕
所以选择 C 选项
第5题
🎗 若 int a = 10 ,则执行表达式 a += a *= a -= a/3 后 a 的值为
📝 分析:
❗ 影响表达式求值的有三个因素:❕
1️⃣ 操作符的优先级
2️⃣ 操作符的结合性 (优先级相同的情况下,结合性决定了运算顺序)
3️⃣ 是否控制求值顺序 (比如 &&,如果左边为假,则整体为假)
⚠ 注意:
N\\A是无结合性
L-R是从左向右
R-L是从右向左
由此可见这里计算的顺序是:
所以 a 的值是 98
以上是关于C语言入门必做踩坑题《篇四》的主要内容,如果未能解决你的问题,请参考以下文章