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语言入门必做踩坑题《篇四》的主要内容,如果未能解决你的问题,请参考以下文章

C语言入门必做踩坑题《篇七》

C语言入门必做踩坑题《篇七》

C语言入门必做踩坑题《篇一》

C语言入门必做踩坑题《篇一》

C语言入门必做踩坑题《篇六》

C语言入门必做踩坑题《篇六》