C语言精选——选择题Day40
第一题
1. int a[10] = {2,3,5}, 请问a[3]及a[3]之后的数值是()
A:不确定的数据
B:5
C:0
D:0xf f f f f f f f
答案及解析 C
数组的不完全初始化,会自动把没初始化的部分初始化为0;
第二题
2. 引用标准库时,下面的说法正确的是()
A:语句#include “stdlib.h”是正确的,而且程序编译速度比#include< stdlib.h >要快
B:语句#include< stdlib.h >是正确的,而且程序编译速度比#include “stdlib.h”要快
C:语句#include< stdlib.h >和#include “stdlib.h”都是正确的,程序编译速度没有区别
D:语句#include “stdlib.h”是错误的
答案及解析 B
#include "" 是先在当前的工作目录上去找" "里面的头文件,若没找到,再去标准库去找;
#include <>则是先去标准库去找,找不到再去当前工作目录;
所以stdlib.h 是一个C标准库里面的头文件,所以<stdlib.h>一定更快;
第三题
3. 在32位机器上,有如下代码:输出结果为()
#include <stdio.h>
void func0()
{
char array[] = "abcdefg";
printf("%d ", sizeof(array));
const char *p = "abcdefg";
printf("%d ", sizeof(p));
}
void func1(char p[10])
{
printf("%d ", sizeof(p));
}
int main()
{
char p[10] = "hello";
func0();
func1(p);
printf("%d ", sizeof(char[2]));
return 0;
}
A:8 4 4 2
B:4 4 4 4
C:8 8 4 2
D:8 4 4 1
答案及解析 A
func0里面
第一个输出 :sizeof数组名表示的是整个数组的大小,但是别忘了一个隐藏的\0,所以为8;
第二个输出:sizeof(p),p是一个指针类型,32位下是4字节,所以为4;
func1这里
第三个输出:传入的是一个数组名,所以数组在传参的时候会退化成指针类型,p其实是一个指针类型,char *类型,sizeof(p),依旧是4字节;
第四个输出:sizeof(char [2])这里的char [2]其实是一个数据类型,表示的是一个char数组,有两个元素,所以为2字节;
答案就是8442;
大家有想继续练习sizeof的,可以看这几个博客:
全网最详细的sizeof运算和strlen函数讲解(通过多种数据类型举例)_sizeof怎么计算字节长度-CSDN博客
sizeof运算和strlen函数的笔试题(三)-CSDN博客
sizeof运算与strlen函数笔试题(二)-CSDN博客
sizeof运算与strlen函数的面试笔试题(排版很舒服)-CSDN博客
第四题
4. 以下程序的运行结果是()
#include <stdio.h>
#define MIN(x,y) (x)<(y) ? (x):(y)
int main()
{
int i = 10, j = 15, k;
k = 10*MIN(i, j);
printf ("%d\n", k);
}
A:10
B:15
C:100
D:150
答案及解析 B
本题考查#define的替换和运算符优先级
k = 10 * MIN(i, j) = 10 * (x) < (y) ? (x) : (y) = 10 * 10 < 15 ? 10 : 15
*的优先级高于条件操作符
所以 k = 100 < 15 ? 10 : 15 = 15;
第五题
5. 32位系统下下面程序的输出结果为多少?
#include <stdio.h>
void Func(char str_arg[100])
{
printf("%d\n", sizeof(str_arg));
}
int main()
{
char str[] = "Hello";
printf("%d\n", sizeof(str));
printf("%d\n", strlen(str));
char*p = str;
printf("%d\n", sizeof(p));
Func(str);
}
A:5 5 4 4
B:6 5 4 4
C:6 5 6 4
D:5 5 5 100
答案及解析 B
前两个就不解释了,分别为6,5;因为有隐藏的\0,sizeof算,strlen不算
具体博客:全网最详细的sizeof运算和strlen函数讲解(通过多种数据类型举例)_sizeof怎么计算字节长度-CSDN博客
第三个,p是指针类型,sizeof(p)是算的指针类型,32位下指针类型4字节
第四个,这里要知道数组在传参的时候,会转换成指针,所以str_arg是一个指针类型,依旧位4;