QQ在线服务: 风舞残阳风舞残阳 年满19岁年满19岁 小罗小罗 晴天晴天 心雨心雨 叮叮肉叮叮肉 小周小周 小童小童 小破孩小破孩 遥望当年遥望当年

用户导购指南

水货IBM笔记本电脑报价

行货IBM笔记本电脑报价

IBM服务器报价

IBM笔记本电脑配件报价

本周水货IBM笔记本电脑特价

IBM笔记本电脑驱动下载

水货IBM笔记本电脑验机流程

水货IBM笔记本电脑保修政策

IBM笔记本电脑FRU查询

IBM笔记本电脑常见问题

IBM笔记本电脑使用手册

笔记本电脑验机软件

论坛积分使用说明

水货IBM笔记本电脑异地购机流程

笔记本电脑购机经历及现场

贵宾申请入口

贵宾用户FTP入口

查看笔记本配置

水货APPLE苹果笔记本电脑报价

 
发新话题
打印

[linux教程] Linux应聘常考题: C中的strcpy()函数

Linux应聘常考题: C中的strcpy()函数

很多公司用这个函数考察应聘者的一些技能,如代码风格、代码成熟度等。首先要避免国内一些教科书的误导的诸如while(*dest=*src)这样的代码。我把参考写法如下(纯C代码):-----------------------------------------------------------------------------000001#include002003#defineBOUNDS_VIOLATED(__builtin_trap(),0)004005#defineCHECK_BOUNDS_LOW(ARG)\006(((__ptrvalue(ARG)%26lt;__ptrlow(ARG))%26;amp;%26;amp;BOUNDS_VIOLATED),\007__ptrvalue(ARG))008009#defineCHECK_BOUNDS_HIGH(ARG)\010(((__ptrvalue(ARG)%26gt;__ptrhigh(ARG))%26;amp;%26;amp;BOUNDS_VIOLATED),\011__ptrvalue(ARG))012013/*copysrctodest*/014char*015strcpy(char*dest,constchar*src)016{017registercharc;018char*__unboundeds=(char*__unbounded)CHECK_BOUNDS_LOW(src);019constptrdiff_toff=CHECK_BOUNDS_LOW(dest)-s-1;020size_tn;021do{022c=*s;023s[off]=c;024}while(c!='\0');025n=s-src;026(void)CHECK_BOUNDS_HIGH(srcn);027(void)CHECK_BOUNDS_HIGH(destn);028returndest;029}030要注意的有:1、第003行宏调用的函数为指针越界陷阱系统调用(boundscheck,即int$5);2、第006行的‘%26;amp;%26;amp;’和‘,’符号在宏中的用法;3、数据类型的定义,诸如ptrdiff_t,size_t等的使用;4、第023的s指针为什么高效,如寄存器使用数量是最少的;5、第026行为什么要返回void类型;如果你这些都已经很熟悉了,我相信没有公司可以立即拒绝你。有问题大家探讨,一起学习成长。
* k; O1 @8 d/ P+ d7 U[color=#FFFFFF']
(※本文搜集自:重庆未来科技 http://www.wlkj.net 重庆IBM笔记本电脑、重庆IBM水货笔记本电脑、重庆苹果笔记本电脑、重庆IBM服务器专卖)

TOP

******请登陆论坛查看内容******

(※本文搜集自:重庆未来科技 http://www.wlkj.net 重庆IBM笔记本电脑、重庆IBM水货笔记本电脑、重庆苹果笔记本电脑、重庆IBM服务器专卖)
这是赤果果的灌水呐
What good would wings be
if you couldn't feel wind on your face

TOP

发新话题