选择题
1.
思路:e是按指数类型输出,f是按照浮点数类型输出(输出只有f不用lf)
输出默认是右对齐,-则是左对齐,四位精度就是小数点后保留几位用.4,输出字符数用整数30在小数点前表示即可。
如果这个数没有三十位数这么长就将空着的位置打印成空格。
2.
思路:常量指针与指针常量的区别
常量指针:指针所指空间的值不能改变,不能通过指针解引用改变控件中的值,但是可以改变指针所指向的空间。
指针常量:指针所指的空间不能改变,但是可以改变空间中的值。
区分:根据const与*的相对位置,const在*的左边则是常量指针,在右边则是指针常量
(6)(7)有明显错误,p2是常量指针,p3是指针常量
3.
思路:A:acX与acY 的内存空间都在栈上,正确
B:szX与szY指向的都是同一个字符串,因此是同一个内存空间
C:acX与acY的区别就是初始化方式不一样,acX的方式会自动保存一个/n,会多占用一个内存空间
D:szX的内容修改只会改变szX的所指对象,不会影响szY的内容
4.
思路:第三行代码中*的优先级是大于+=的,因此执行结果相当于a[0]=3.
*(b+2)=2相当于a[2]=2
b++使指针向后移动四个字节
易得结果为C
5.
答案:B,宏定义在预处理中就替换了源代码、而且没有参数安全检,有不少缺点,不能得出避免使用const的结论
6.
思路:函数以数组作为参数的时候我们可以用数组名来调用,
A选项数组名反了
B选项不需要类型
C不应该加方括号
7.
思路:
A:a先与[]结合在与int *结合,是一个指针数组,存放指针的数组
B:是一个数组指针,是一个指向数组的指针
C:是一个函数指针,指向有一个整型参数且,一个返回值为int的函数
D:是一个指针数组且每个指针指向的值为一个有一个整型参数吗,并且返回值为int的函数
8.
思路:
(1)与(2)是我们要补充的内容,第一个循环是为了记录每个字符的出现次数,第二个循环是为了输出字符与其出现次数
由于字符串都是大写字符,就光看(1)就可以排除ABCE,AB的括号是负数,C的[i]没有任何意义,E中a[i]还会越界
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