笔试强训Day2

选择题

1.

笔试强训Day2_第1张图片

 思路:e是按指数类型输出,f是按照浮点数类型输出(输出只有f不用lf)

输出默认是右对齐,-则是左对齐,四位精度就是小数点后保留几位用.4,输出字符数用整数30在小数点前表示即可。

如果这个数没有三十位数这么长就将空着的位置打印成空格。

2.

笔试强训Day2_第2张图片

思路:常量指针与指针常量的区别

常量指针:指针所指空间的值不能改变,不能通过指针解引用改变控件中的值,但是可以改变指针所指向的空间。

指针常量:指针所指的空间不能改变,但是可以改变空间中的值。

区分:根据const与*的相对位置,const在*的左边则是常量指针,在右边则是指针常量

(6)(7)有明显错误,p2是常量指针,p3是指针常量

3.

笔试强训Day2_第3张图片

思路:A:acX与acY 的内存空间都在栈上,正确

B:szX与szY指向的都是同一个字符串,因此是同一个内存空间
C:acX与acY的区别就是初始化方式不一样,acX的方式会自动保存一个/n,会多占用一个内存空间

D:szX的内容修改只会改变szX的所指对象,不会影响szY的内容

4.

笔试强训Day2_第4张图片

 思路:第三行代码中*的优先级是大于+=的,因此执行结果相当于a[0]=3.

*(b+2)=2相当于a[2]=2

b++使指针向后移动四个字节

易得结果为C

5.

笔试强训Day2_第5张图片

 答案:B,宏定义在预处理中就替换了源代码、而且没有参数安全检,有不少缺点,不能得出避免使用const的结论

6.

笔试强训Day2_第6张图片

 思路:函数以数组作为参数的时候我们可以用数组名来调用,

A选项数组名反了

B选项不需要类型

C不应该加方括号

7.

笔试强训Day2_第7张图片

 思路:

A:a先与[]结合在与int *结合,是一个指针数组,存放指针的数组

B:是一个数组指针,是一个指向数组的指针

C:是一个函数指针,指向有一个整型参数且,一个返回值为int的函数

D:是一个指针数组且每个指针指向的值为一个有一个整型参数吗,并且返回值为int的函数

8.

笔试强训Day2_第8张图片

 思路:

(1)与(2)是我们要补充的内容,第一个循环是为了记录每个字符的出现次数,第二个循环是为了输出字符与其出现次数

由于字符串都是大写字符,就光看(1)就可以排除ABCE,AB的括号是负数,C的[i]没有任何意义,E中a[i]还会越界

9.

笔试强训Day2_第9张图片

思路:

变量a是一个unsigned的类型,:后面为我们定义的变量的内存大小,单位为比特,其他几个变量同理

这题需要用到结构体内存对齐的机制

栈为a开辟了4个字节(32 个比特),a占据了19个

b大小为11,会继续占据a开辟的空间,因为19+11=30<32,

c的大小为4,上面开辟的空间不够用,在栈上继续开辟4字节(32bit),

由于d的29+4>32,所以d需要再开辟空间,4字节

index独自占据一个字节,

ab占了对齐数为0~3的空间,c占据了4~7的空间,d占据的了8~11的空间,index占据了12号空间。

32位机器的默认对齐数为4,而且上诉最大的参数为4,结构体的内存大小必须为最大参数的倍数,因此A占的大小为16

 

 

你可能感兴趣的:(笔试强训,C语言,c++)