已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重解几道华为经典重解几道华为经典 C C 语言面试题语言面试题 2009 04 17 17 09 19 作者 来源 软件屋 浏览次数 171 文字大小 大 中 小 1 找错 1 找错 void test1 char string 10 char str1 0123456789 strcpy string str1 这里 string 数组越界 因为字符串长度为10 还有一个结束符 0 所以总共有11 个字符长度 string 数组大小为10 这里越界了 PS 使用 strcpy 函数的时候一定要注意前面目的数组的大小一定要大于后面字符串的 大小 否则便是访问越界 void test2 char string 10 str1 10 for i 0 i 10 i str1 i a strcpy string str1 这里有一个一眼就能看出的问题 那就是变量 i 没有定义 这在代码编译阶段编译器可 以帮你发现 很容易搞定 然而很多问题是自己造成的漏洞 编译器是帮不上什么忙的 这 里最大的问题还是 str1没有结束符 因为 strcpy 的第二个参数应该是一个字符串常量 该 函数就是利用判断第二个参数的结束符来得到是否拷贝完毕 所以在 for 循环后面应加上 s tr1p 9 0 PS 字符数组和字符串的最明显的区别就是字符串会被默认的加上结束符 0 void test3 char str1 char string 10 if strlen str1 10 strcpy string str1 这里的问题仍是越界问题 strlen 函数得到字符串除结束符外的长度 如果这里是 1 0话 就很明显越界了 小结 上面的三个找错的函数 主要是考查对字符串和字符数组的概念的掌握以及对 strcpy 函数和 strlen 函数的理解 2 找错 DSN get SRM no static int SRM no int I for I 0 I MAX SRM return NULL SRM else return SRM no 这里 for 循环的判断语句是后来我加上的 估计在网上流传的时候被人给弄丢了 根据 对程序的分析 给补上了 估计错误应该不是这儿 简单的阅读一下这个函数 可以大概的可以猜测出这个函数的功能是分配一个空闲的 SRAM 块 方法 从上次分配的 RAM 块后的 RAM 块开始检测 SRAM 每个 RAM 块 看是否是 IDLE 状态 如果是 IDLE 则返回当前的 RAM 块的号 SRM no 如果所有的 RAM 块都不是 IDLE 状态 则意味着无法分配一个RAM给函数调用者 返回一个表示没有RAM可分配的标志 NULL SRM 经过上面的分析 则这里可以知道 这个函数的错误是 for 循环里面没有给 SRM no 这 个变量累加1 3 写出程序运行结果 int sum int a auto int c 0 static int b 3 c 1 b 2 return a b c void main int I int a 2 for I 0 I 5 I printf d sum a 运行结果是 8 10 12 14 16 在求和函数 sum 里面 c 是 auto 变量 根据 auto 变量特性知每次调用 sum 函数时变量 c 都会自动赋值为0 b 是 static 变量 根据 static 变量特性知每次调用 sum 函数时变量 b 都 会使用上次调用 sum 函数时 b 保存的值 简单的分析一下函数 可以知道 若传入的参数不变 则每次调用 sum 函数返回的结果 都比上次多2 所以答案是 8 10 12 14 16 4 func 1 int func int a int b switch a case 1 30 case 2 20 case 3 16 default 0 return b 在 case 语句中可能忘记了对变量 b 赋值 如果改为下面的代码 int func int a int b switch a case 1 b 30 case 2 b 20 case 3 b 16 default b 0 return b 因为 case 语句中漏掉了 break 语句 所以无论传给函数的参数是多少 运行结果均为0 5 a q p int a 3 a 0 0 a 1 1 a 2 2 int p q p a q if year 0 month 12 date 31 hour 23 minute 59 second 60 return if year 400 0 year 100 0 if second 60 second 0 minute 1 if minute 60 minute 0 hour
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46633-2025土方机械挖掘机运行能效评价方法
- 2025年衡阳辅警招聘考试题库及答案详解(各地真题)
- 2025年甘孜藏族自治州辅警招聘考试真题附答案详解(轻巧夺冠)
- 2025年漳州辅警招聘考试真题及答案详解(有一套)
- 2025年苗栗县辅警招聘考试题库附答案详解(b卷)
- 2025年白银辅警招聘考试题库有答案详解
- 2025年韶关辅警招聘考试题库附答案详解(轻巧夺冠)
- 2025年苗栗县辅警招聘考试题库含答案详解(考试直接用)
- 2025年衡阳辅警协警招聘考试备考题库(含答案详解)
- 2025年海西州辅警协警招聘考试备考题库及答案详解(有一套)
- 三人合租房协议合同
- 直立性低血压诊断与处理中国多学科专家共识(2024版)解读
- 各科室迎检资料盒
- GB/T 2423.17-2024环境试验第2部分:试验方法试验Ka:盐雾
- 海姆立克急救法课件(课件)
- 重庆市存量房买卖合同示范文本模板
- A型肉毒素治疗知情同意书 注射知情同意书
- 石油化工行业标准规范目录(SH)
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 2023-2024学年高中主题班会 200天大有作为-高考倒计时200天主题班会课件
- 幼儿园保温桶管理制度
评论
0/150
提交评论