C/C++基础面试集锦(一)strcpy、memcpy-阿里云开发者社区

开发者社区> xinxinitblog> 正文

C/C++基础面试集锦(一)strcpy、memcpy

简介: **一、strcpy函数实现方法** char* strcpy(char *dest, const char *src) { assert((dest != NULL) && (src != NULL)); char *DesSrc = dest; w...
+关注继续查看

**一、strcpy函数实现方法**

char* strcpy(char *dest, const char *src)
{
    assert((dest != NULL) && (src != NULL));
    char *DesSrc = dest;
    while((*dest++ = *src++)!='\0');
    return DesSrc;
}

二、获取字符串长度函数实现方法

代码一

int getStrLen1(const char *strSrc)
{
    int len = 0;
    while(*strSrc++ != '\0')
        len++;
    return len;
}
代码二

int getStrLen2(const char *strSrc)
{
    int len = 0;
    const char *strDe = strSrc;
    while(*strSrc++ !='\0');
    len = (strSrc-strDe-1);
    return len;
}

三、memcpy函数实现方式

void *memcpy(void *dest, const void *src, size_t n)
{
    assert((dest != NULL) && (src != NULL));
    char *tempFrom = (char*)src;
    char *tempTo = (char*)dest;
    while(n-- >0)
        *tempTo++ = *tempFrom++;
    return dest;
}

心得:

C/C++开发者更忌讳眼高手低,初级程序员每天写的不是代码而是bug,基础的东西面试的时候你也许连及格分都达不到,虽然或许你已经入行几年。

总结:

  1. strcpy与memcpy不同存在于:strcpy只复制字符串,而memcpy可以复制任何内容(字符数组、结构体、类)等。strcpy不需要指定长度由结束符”\0”而结束战斗的,memcpy由第三个参数所决定

  2. strcpy返回值为char*是为了链式表达式,先复制后计算长度。

  3. 上面获取字符串长度函数中有两种方法,第二种要比第一种更高效,至于为啥?相信仔细思考便知,这正是我们C/C++开发者追求卓越所需不断思考的

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C++语言基础 例程 字符串类
贺老师的教学链接 C++中的新成份——string类型 (1) #include <iostream> #include <cstring> using namespace std; int main( ) { char str1[50],str2[50],temp[50]; cout<<"please input s
743 0
C++语言基础 例程 C++的数据类型和运算符
贺老师的教学链接 第一个C++程序 #include <iostream> //包含头文件iostream using namespace std; //使用命名空间std int main( ) { cout<<"Hello World."<<endl; //输出结果 return
837 0
C++语言基础 例程 C++中的输入和输出
贺老师的教学链接 程序将自行识别符号 #include <iostream> using namespace std; int main() { int a,b; char op; cin>>a>>op>>b cout<<"result: "<<'\n';
893 0
C++语言基础 例程 函数重载
贺老师的教学链接 重载函数:同名同体,但接口不同 #include <iostream> using namespace std; int max(int a,int b,int c); //函数声明 double max(double a,double b,double c); long max(long a,long b,long c
800 0
C++面试题(一)——基础概念篇
C++面试题——基础概念篇http://blog.csdn.net/worldwindjp/ 面试C++程序员的时候一般都是3板斧,先是基础问答,然后一顿虚函数、虚函数表、纯虚函数、抽象类、虚函数和析构函数、虚函数和构造函数。
1276 0
C#基础知识-对象初始化顺序
本文章转载:http://blog.csdn.net/forever_wind/article/details/7442503 不错的文章:http://www.cnblogs.com/McJeremy/archive/2009/04/23/1442163.
517 0
Android面试题库 - Service(一) - 基础
Service应用场景、与Thread的区别 Service是什么 Service是一个一种在后台长时间执行操作而有没有用户界面的应用组件。 Service与Thread的区别 Thread 最小的运行单元,可以用来执行耗时操作 Service 运行在主线程,不能做耗时操作 ANR 时间20s Service的两种启动方式 两种启动方式说明 启动 当应用组件(如 Activity)通过调用 startService() 启动服务时,服务即处于“启动”状态。
1000 0
+关注
xinxinitblog
C++和iOS码农
178
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载