C语言—每日选择题—Day55

指针相关博客

打响指针的第一枪:指针家族-CSDN博客

深入理解:指针变量的解引用 与 加法运算-CSDN博客

第一题

1. 若有如下定义,则 p1=&m;p2=p1; 是正确赋值语句.说法是否正确?

int *p1;
int *p2;
int m = 5;
int n;

A:正确

B:错误

答案及解析 A

本题考查的是对类型的认识,p1是指针类型,赋值的右操作数就必须是地址;

第二题

2. 在64位下,下面代码运行的结果为()

#include <stdio.h>
int main()
{
    char str[] = "abcde";
    const char *p = "abcde";
    printf("%lu %lu\n", sizeof(str), sizeof(p));
    return 0;
}

A:8 8 

B:4 4

C:5 8

D:6 8

答案及解析 D

这里想给大家说的就是,只有size(数组名)才是表示的整个数组的大小,注意字符串末尾有隐藏的\0,所以是6,但是对于第二个是一个指针类型执指向了一个字符串,我们知道sizeof是求数据类型的字节数,那64位下,指针类型就是8;

全网最详细的sizeof运算和strlen函数讲解(通过多种数据类型举例)_sizeof怎么计算字节长度-CSDN博客

第三题

3. 已知int i=0,x=0;,在下面while语句执行时循环次数为()

while (!x && i< 3) 
{
    x++;
    i++;
}

A:4

B:3

C:2

D:1

答案及解析 D

本题想考查大家对操作符优先级和运算顺序

&&优先级最低,而结合性是从左往右,也就是先算左,左边为真继续算,为假就不需要算了

0为假,非0为真

C语言操作符优先级表格(建议收藏,每次看一下)-CSDN博客

所以第一次循环,x = 0,!x 就是真,i = 0 ,确实小于3,条件成立

第二次循环,x = 1 ,!x 就是假,&&一假就是假,所以条件不成立,退出循环

第四题

4. 预处理阶段进行了哪些()

A:宏替换

B:头文件展开

C:去注释

D:进行条件编译判断

E:都对

答案及解析 E

预处理阶段就是处理上面选项中的内容

通过历史 --> 了解翻译环境(预处理、编译、汇编、链接)-CSDN博客

第五题

5. func(1)的值是多少?

int func(int a)
{
      int b;
      switch(a)
      {
          case 1:b = 100;
          case 2:b = 200;
          case 3:b = 250;
          default:b = 0; 
      }
      return b;
}

A:100

B:200

C:250

D:0

答案及解析 D

本题就很好的验证了switch语句中case或者default后面没有break语句就会一直执行下去,所以当a = 1的时候,是满足case1的,由于下面的每一个语句都没有break,就会依次执行

我们的b 就被依次赋值为100,200,250,0;最后赋值的是0,结果就为0;

猜你喜欢

转载自blog.csdn.net/2302_76941579/article/details/135094577