c/c++面试题一
1.找错
void test1()
{
char string[10];
char *str1="0123456789";
strcpy(string,str1);
}
试题一字符串str1需要11个字节才能存放下(包括末尾的‘/0'),而string
只有10个字节的空间,strcpy会导致数组越界。
void test2()
{
char string[10],str1[10];
int i;
for (i=0;i<10;i++)
{
str1[i]='a';
}
strcpy(string,str1);
}
对试题2,如果面试者指出字符数组str1不能在数组内结束,指出strcpy
(string,str1)调用使得从str1内存起复制到string内存起所复制的字节数具有
不确定性,库函数strcpy工作方式
void test3(char *str1)
{
char string[10];
if (strlen (str1)<=10)
{
strcpy(string,str1);
}
}
if (strlen(str1<=10)
{
strcpy(string,str1);
}
}
对试题3,if(strlen(str1)<=10)应改为if (strlen (str1)<10),因为strlen的结果
未统计'/0'所占用的1个字节。
解析:
(1)字符串以’/0'结尾;
(2)对数组越界把握的敏感度
(3)库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值
void strcpy(char *strDest,char *strSrc)
{
while ((*strDest++=*strSrc++!='/0');
}
void strcpy(char *strDest,const char *strSrc)
//对源字符串加const,表明其为输入参数
{
while ((*strDest++=*strSrc++)!='/0');
}
void strcpy(char *strDest,const char * strSrc)
{
//对源地址和目的地址加非0断言
assert((strDest!=NULL)&&(strSrc!=NULL));
while ((*strDest++=*strSrc)!='/0');
}
//为了实现链式操作,将目的地址返回
char *strcpy(char *strDest,const char *strSrc)
{
assert((strDest!=NULL)&&(strSrc!=NULL));
char *address =strDest;
while ((*strDest++=*strSrc++)!='/0');
return address;
}
(4)对strlen的掌握,它没有包括字符串末尾的'/0'
int strlen(const char *str)//输入参数const
{
assert(str!=NULL);//断言字符串地址非0
int len ;
while ((*str++)!='/0')
{
len++;
}
return len;
}
试题4:
void GetMemory(char *p)
{
p=(char*)malloc(100);
}
c/c++面试题一的更多相关文章
- .NET面试题系列[8] - 泛型
“可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用.“ - Jon Skeet .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] ...
- 关于面试题 Array.indexof() 方法的实现及思考
这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...
- 对Thoughtworks的有趣笔试题实践
记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...
- 从阿里巴巴笔试题看Java加载顺序
一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...
- JAVA面试题
在这里我将收录我面试过程中遇到的一些好玩的面试题目 第一个面试题:ABC问题,有三个线程,工作的内容分别是打印出"A""B""C",需要做的 ...
- C++常考面试题汇总
c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...
- .NET面试题系列[4] - C# 基础知识(2)
2 类型转换 面试出现频率:主要考察装箱和拆箱.对于有笔试题的场合也可能会考一些基本的类型转换是否合法. 重要程度:10/10 CLR最重要的特性之一就是类型安全性.在运行时,CLR总是知道一个对象是 ...
- 我们公司的ASP.NET 笔试题,你觉得难度如何
本套试题共8个题,主要考察C#面向对象基础,SQL和ASP.NET MVC基础知识. 第1-3题会使用到一个枚举类,其定义如下: public enum QuestionType { Text = , ...
- 我设计的ASP.NET笔试题,你会多少呢
本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...
- 猫哥网络编程系列:详解 BAT 面试题
从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...
随机推荐
- 【Alpha】Scrum Meeting 11
目录 前言 任务分配 燃尽图 会议照片 签入记录 前言 第11次会议于4月16日18:15在一公寓三楼召开. 交流确认了任务进度,讨论项目发布事宜,分配下一阶段任务.时长45min. 任务分配 姓名 ...
- docker daemon 配置代理
创建插件目录 sudo mkdir -p /etc/systemd/system/docker.service.d 编写proxy配置文件 #vim /etc/systemd/system/docke ...
- Redis 单机版
Redis 支持单机版和集群,下面的步骤是单机版安装步骤 1. # yum install -y gcc-c++ 1.1 由于是c语言编写,所以需要安装支持组件 2. 把压缩包上传到linux服务器上 ...
- HDU 3085 Nightmare Ⅱ(噩梦 Ⅱ)
HDU 3085 Nightmare Ⅱ(噩梦 Ⅱ) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- jQuery拼接HTML标签元素
1. append & appendTo 的功能均为:在被选元素结尾(仍在元素内部)插入指定内容,但是内容和选择器的位置不同 (1) append()方法: //在id为element元素内部 ...
- Dingo 的安装
安装Dingo需要下面的环境: Laravel 5.1 或 lumen 5.1 + php 5.59+ 1. 修改composer.json 文件,添加下面的代码: "require&quo ...
- C#实现基于ffmpeg加虹软的人脸识别demo及开发分享
对开发库的C#封装,屏蔽使用细节,可以快速安全的调用人脸识别相关API.具体见github地址.新增对.NET Core的支持,在Linux(Ubuntu下)测试通过.具体的使用例子和Demo详解,参 ...
- java异常处理try catch finally
1 异常 1.1 异常处理的作用 在编程时,如果出现文件打开失败,读写文件就会异常退出.如果出现内存溢出错误,程序也会异常退出.如果不能对这些异常进行处理.程序则无法正常运行.所 ...
- 如何系统地自学 Python?
最近开始系统的学习Python,以及整理的一些资料.github记录着个人自学 Python 的过程,持续更新.欢迎大家一起来完善这个自学Python学习的项目,给后来者一个参考的学习过程.githu ...
- vmware虚拟机安装vmware tools
为了在主机与虚拟机之间共享文件,需要安装vmware tools.在安装vmware tools的过程中遇到了几个坑,在此记录一下. 一.虚拟机关机情况下进行设置.虚拟机->设置->CD/ ...