目录1. sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof和strlen的对比2. 数组和指针笔试题解析2.1 一维数组2.2 字符数组2.3 二维数组3. 指针运算笔试题解析3.1 题目13.2 题目23.3 题目33.4 题目43.5 题目53.6 题目63.7 题目71. sizeof和strlen的对比1.1 sizeof在学习操作符的时候我们学习了sizeofsizeof 是计算变量所占内存空间大小的单位是字节如果操作数是类型的话计算的是使用类型创建的变量所占内存空间的大小。sizeof只关注占用内存空间的大小不在乎内存中存放什么数据。sizeof的返回值是size_t类型的。例如1 #inculde stdio.h 2 int main() 3 { 4 int a 10; 5 printf(%d\n, sizeof(a)); 6 printf(%d\n, sizeof a); 7 printf(%d\n, sizeof(int)); 8 9 return 0; 10 }1.2 strlenstrlen是C语言库函数功能是求字符串长度。函数原型如下1 size_t strlen ( const char * str );统计的是从 strlen 函数的参数 str 中这个地址开始向后 \0 之前字符串中字符的个数。strlen函数会⼀直向后找\0字符直到找到为止所以可能存在越界查找。且使用strlen库函数要包含头文件string.h#include stdio.h int main() { char arr1[3] {a, b, c}; char arr2[] abc; printf(%d\n, strlen(arr1)); printf(%d\n, strlen(arr2)); printf(%d\n, sizeof(arr1)); printf(%d\n, sizeof(arr2)); return 0; }1.3 sizeof和strlen的对比对比sizeofstrlen本质操作符库函数头文件不需要额外头文件需要头文件string.h作用计算变量或类型占用的内存大小计算字符串的长度统计内容统计所占内存的字节数统计 \0 之前的字符个数单位字节字符个数是否关注内容不关心内存中存放什么数据关心内存中是否会有 \0如果没有 \0 就会持续往后找可能会越界2. 数组和指针笔试题解析在做题之前我先把核心知识点整理以下题目均需用到此知识点数组名的意义1.sizeof(数组名)这里的数组名表示整个数组计算的是整个数组的大小。2.数组名这里的数组名表示整个数组取出的是整个数组的地址。3.除此之外所有的数组名都表示首元素的地址。2.1 一维数组运行结果解释2.2 字符数组代码1运行结果解释代码2运行结果解释代码3运行结果解释代码4运行结果解释代码5运行结果解释代码6运行结果解释2.3 二维数组运行结果解释3. 指针运算笔试题解析3.1 题目1运行结果解释3.2 题目2运行结果解释3.3 题目3运行结果解释首先012345是逗号表达式当没有括号时第一个表达式为整个表达式的值有括号时依次执行后最后一个表达式为整个表达式的值而且所有的表达式都依次执行了。所以数组的排列如下经过推导便可以知道答案为1。3.4 题目4运行结果解释3.5 题目5运行结果解释3.6 题目6运行结果解释3.7 题目7运行结果解释