📌 本文作者: Foxny
📃 更新记录: 2021.7.8
? 勘误记录: 无
📜 本文声明: 由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!
📝 例题:
🔍 题目详解展示:
数组笔试题(答案+详解)
8道大题(共63小题),每小题1分,满分63分
📚 说明:
① 建议做题时拿出纸和笔写出你认为的结果;
② 建议先不要看答案,写完后再看答案进行核对;
③ 部分题目前面有对应知识点的传送超链接,可自行选择复习;
④ 对于做错的题,可以看题目答案下面的解析部分,以便深入理解;
⑤ 可以在评论区回复自己做对了几题;
第一大题:
每小题1分,满分7分
📌 复习:【维生素C语言】第五章 - 操作符(?0x05 操作数的类型长度 sizeof )
💬 预测下列代码的运行结果( sizeof )
int main()
{
int a[] = {1, 2, 3, 4}; // 一维数组
/* 1 */ printf("%d\n", sizeof(a));
/* 2 */ printf("%d\n", sizeof(a + 0));
/* 3 */ printf("%d\n", sizeof(*a));
/* 4 */ printf("%d\n", sizeof(a + 1));
/* 5 */ printf("%d\n", sizeof(a[1]));
/* 6 */ printf("%d\n", sizeof(&a));
/* 7 */ printf("%d\n", sizeof(*&a));
/* 8 */ printf("%d\n", sizeof(&a + 1));
/* 9 */ printf("%d\n", sizeof(&a[0]));
/* 10 */ printf("%d\n", sizeof(&a[0] + 1));
return 0;
}
💡 答案:
/* 1 */ printf("%d\n", sizeof(a)); // 16
/* 2 */ printf("%d\n", sizeof(a + 0)); // 4/8
/* 3 */ printf("%d\n", sizeof(*a)); // 4
/* 4 */ printf("%d\n", sizeof(a + 1)); // 4/8
/* 5 */ printf("%d\n", sizeof(a[1])); // 4
/* 6 */ printf("%d\n", sizeof(&a)); // 4/8
/* 7 */ printf("%d\n", sizeof(*&a)); // 16
/* 8 */ printf("%d\n", sizeof(&a + 1)); // 4/8
/* 9 */ printf("%d\n", sizeof(&a[0])); // 4/8
/* 10 */ printf("%d\n", sizeof(&a[0] + 1)); // 4/8
🔑 解析:
1??
2??
3??
4??
5??
6??
7??
8??
9??
🔟
第二大题:
📌 复习:【维生素C语言】第四章 - 数组( 0x02 一维数组的初始化 )
每小题1分,满分7分
💬 预测下列代码的运行结果( sizeof )
int main()
{
char arr[] = {'a','b','c','d','e','f'}; // 字符数组
/* 1 */ printf("%d\n", sizeof(arr));
/* 2 */ printf("%d\n", sizeof(arr+0));
/* 3 */ printf("%d\n", sizeof(*arr));
/* 4 */ printf("%d\n", sizeof(arr[1]));
/* 5 */ printf("%d\n", sizeof(&arr));
/* 6 */ printf("%d\n", sizeof(&arr+1));
/* 7 */ printf("%d\n", sizeof(&arr[0]+1));
return 0;
}
💡 答案:
/* 1 */ printf("%d\n", sizeof(arr)); // 6
/* 2 */ printf("%d\n", sizeof(arr+0)); // 4/8
/* 3 */ printf("%d\n", sizeof(*arr)); // 1
/* 4 */ printf("%d\n", sizeof(arr[1])); // 1
/* 5 */ printf("%d\n", sizeof(&arr)); // 4/8
/* 6 */ printf("%d\n", sizeof(&arr+1)); // 4/8
/* 7 */ printf("%d\n", sizeof(&arr[0]+1)); // 4/8
🔑 解析:
1??
2??
3??
4??
5??
6??
7??
第三大题:
每小题1分,满分7分
💬 预测下列代码的运行结果( strlen )
int main()
{
char arr[] = { 'a','b','c','d','e','f' }; // 字符数组
/* 1 */ printf("%d\n", strlen(arr));
/* 2 */ printf("%d\n", strlen(arr + 0));
/* 3 */ printf("%d\n", strlen(*arr));
/* 4 */ printf("%d\n", strlen(arr[1]));
/* 5 */ printf("%d\n", strlen(&arr));
/* 6 */ printf("%d\n", strlen(&arr + 1));
/* 7 */ printf("%d\n", strlen(&arr[0] + 1));
return 0;
}
💡 答案:
/* 1 */ printf("%d\n", strlen(arr)); // 随机值
/* 2 */ printf("%d\n", strlen(arr + 0)); // 随机值
/* 3 */ printf("%d\n", strlen(*arr)); // error
/* 4 */ printf("%d\n", strlen(arr[1])); // error
/* 5 */ printf("%d\n", strlen(&arr)); // 随机值
/* 6 */ printf("%d\n", strlen(&arr + 1)); // 随机值-6
/* 7 */ printf("%d\n", strlen(&arr[0] + 1)); // 随机值-1
🔑 解析:
1??
2??
3??
4??
5??
6??
7??
第四大题:
每小题1分,满分7分
💬 预测下列代码的运行结果( sizeof )
int main()
{
char arr[] = "abcdef";
/* 1 */ printf("%d\n", sizeof(arr));
/* 2 */ printf("%d\n", sizeof(arr+0));
/* 3 */ printf("%d\n", sizeof(*arr));
/* 4 */ printf("%d\n", sizeof(arr[1]));
/* 5 */ printf("%d\n", sizeof(&arr));
/* 6 */ printf("%d\n", sizeof(&arr+1));
/* 7 */ printf("%d\n", sizeof(&arr[0]+1));
return 0;
}
💡 答案:
/* 1 */ printf("%d\n", sizeof(arr)); // 7
/* 2 */ printf("%d\n", sizeof(arr+0)); // 4/8
/* 3 */ printf("%d\n", sizeof(*arr)); // 1
/* 4 */ printf("%d\n", sizeof(arr[1]));// 1
/* 5 */ printf("%d\n", sizeof(&arr)); // 4/8
/* 6 */ printf("%d\n", sizeof(&arr+1)); // 4/8
/* 7 */ printf("%d\n", sizeof(&arr[0]+1)); // 4/8
🔑 解析:
1??
2??
3??
4??
5??
6??
7??
第五大题:
每小题1分,满分7分
💬 预测下列代码的运行结果( strlen )
int main()
{
char arr[] = "abcdef";
/* 1 */ printf("%d\n", strlen(arr));
/* 2 */ printf("%d\n", strlen(arr + 0));
/* 3 */ printf("%d\n", strlen(*arr));
/* 4 */ printf("%d\n", strlen(arr[1]));
/* 5 */ printf("%d\n", strlen(&arr));
/* 6 */ printf("%d\n", strlen(&arr + 1));
/* 7 */ printf("%d\n", strlen(&arr[0] + 1));
return 0;
}
💡 答案:
/* 1 */ printf("%d\n", strlen(arr)); // 6
/* 2 */ printf("%d\n", strlen(arr+0)); // 6
/* 3 */ printf("%d\n", strlen(*arr)); // error
/* 4 */ printf("%d\n", strlen(arr[1])); // error
/* 5 */ printf("%d\n", strlen(&arr)); // 6
/* 6 */ printf("%d\n", strlen(&arr+1)); // 随机值
/* 7 */ printf("%d\n", strlen(&arr[0]+1)); // 5
🔑 解析:
1??
2??
3??
4??
5??
6??
7??
第六大题:
每小题1分,满分7分
📌 复习:【维生素C语言】第十章 - 指针的进阶(上)(?0x00 字符指针的定义 )
💬 预测下列代码的运行结果( sizeof )
int main()
{
char* p = "abcdef";
/* 1 */ printf("%d\n", sizeof(p));
/* 2 */ printf("%d\n", sizeof(p + 1));
/* 3 */ printf("%d\n", sizeof(*p));
/* 4 */ printf("%d\n", sizeof(p[0]));
/* 5 */ printf("%d\n", sizeof(&p));
/* 6 */ printf("%d\n", sizeof(&p + 1));
/* 7 */ printf("%d\n", sizeof(&p[0] + 1));
return 0;
}
💡 答案:
/* 1 */ printf("%d\n", sizeof(p)); // 4/8
/* 2 */ printf("%d\n", sizeof(p+1)); // 4/8
/* 3 */ printf("%d\n", sizeof(*p)); // 1
/* 4 */ printf("%d\n", sizeof(p[0])); // 1
/* 5 */ printf("%d\n", sizeof(&p));// 4/8
/* 6 */ printf("%d\n", sizeof(&p+1)); // 4/8
/* 7 */ printf("%d\n", sizeof(&p[0]+1)); // 4/8
🔑 解析:
1??
2??
3??
4??
5??
6??
7??
第七大题:
每小题1分,满分7分
💬 预测下列代码的运行结果( strlen )
int main()
{
char *p = "abcdef";
/* 1 */ printf("%d\n", strlen(p));
/* 2 */ printf("%d\n", strlen(p+1));
/* 3 */ printf("%d\n", strlen(*p));
/* 4 */ printf("%d\n", strlen(p[0]));
/* 5 */ printf("%d\n", strlen(&p));
/* 6 */ printf("%d\n", strlen(&p+1));
/* 7 */ printf("%d\n", strlen(&p[0]+1));
return 0;
}
💡 答案:
/* 1 */ printf("%d\n", strlen(p)); // 6
/* 2 */ printf("%d\n", strlen(p+1)); // 5
/* 3 */ printf("%d\n", strlen(*p)); // error
/* 4 */ printf("%d\n", strlen(p[0])); // error
/* 5 */ printf("%d\n", strlen(&p)); // 随机值
/* 6 */ printf("%d\n", strlen(&p+1)); // 随机值
/* 7 */ printf("%d\n", strlen(&p[0]+1)); // 5
🔑 解析:
1??
2??
3??
4??
5??
6??
7??
第八大题:
每小题1分,满分11分
💬 预测下列代码的运行结果( sizeof )
int main()
{
int a[3][4] = {0}; // 二维数组
/* 1 */ printf("%d\n",sizeof(a));
/* 2 */ printf("%d\n",sizeof(a[0][0]));
/* 3 */ printf("%d\n",sizeof(a[0]));
/* 4 */ printf("%d\n",sizeof(a[0]+1));
/* 5 */ printf("%d\n",sizeof(*(a[0]+1)));
/* 6 */ printf("%d\n",sizeof(a+1));
/* 7 */ printf("%d\n",sizeof(*(a+1)));
/* 8 */ printf("%d\n",sizeof(&a[0]+1));
/* 9 */ printf("%d\n",sizeof(*(&a[0]+1)));
/* 10 */ printf("%d\n",sizeof(*a));
/* 11 */ printf("%d\n",sizeof(a[3]));
return 0;
}
💡 答案:
/* 1 */ printf("%d\n",sizeof(a)); // 48
/* 2 */ printf("%d\n",sizeof(a[0][0])); // 4
/* 3 */ printf("%d\n",sizeof(a[0])); // 16
/* 4 */ printf("%d\n",sizeof(a[0]+1)); // 4/8
/* 5 */ printf("%d\n",sizeof(*(a[0]+1)));// 4
/* 6 */ printf("%d\n",sizeof(a+1)); // 4
/* 7 */ printf("%d\n",sizeof(*(a+1))); // 16
/* 8 */ printf("%d\n",sizeof(&a[0]+1)); // 4/8
/* 9 */ printf("%d\n",sizeof(*(&a[0]+1))); // 16
/* 10 */ printf("%d\n",sizeof(*a)); // 16
/* 11 */ printf("%d\n",sizeof(a[3])); // 16
🔑 解析:
1??
2??
3??
4??
5??
6??
7??
8??
9??
🔟
1??1??
总结:
📚 数组名的意义:
① sizeof ( 数组名 )? - 数组名表示整个数组,计算的是整个数组的大小。
② &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
③ 除此之外,所有的数组名都表示首元素的地址。
花絮:
制作不易……大半夜肝出来的!看到画图工具就想吐……
求一键三连,谢谢啦!!
本篇完
|