服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - c++面试题字符串拷贝函数示例

c++面试题字符串拷贝函数示例

2021-01-12 14:55C++教程网 C/C++

这个也算是企业招工里面比较常见的一道笔试面试题了,非常简单。个人觉得考的主要是对指针使用的熟练程度,还有对字符串类内部原理的掌握程度

复制代码 代码如下:


#include<iostream>
using namespace std;

 

//字符串拷贝函数
char * sCpy(char *strDest, char *strSource)
{
    _ASSERT((strDest != NULL) && (strSource!=NULL));
    char *d = strDest;              //获取dest的当前位置
    char *s = strSource;            //获取source的当前位置
    while ((*d++ = *s++) != '\0')   //未到最后一位,作循环
    {
    }
    *d = '\0';                      //补充最后一位
    return strDest;
}

int main()
{
    char *strSource = "hello,world";
    char *strDest = new char[strlen(strSource)+1];      //注意,strlen函数的返回长度是不包括'\0'的,所以要加1
    _ASSERT(strDest != NULL);
    char *strReturn = sCpy(strDest,strSource);
    cout<<"形参返回值"<<strDest<<endl;
    cout<<"函数返回值"<<strReturn<<endl;

    //不作释放操作也应该是没问题的,主线程退出后系统会回收资源
    delete strSource,strDest,strReturn;
    strSource = strDest = strReturn = NULL;
    return 0;
}

 

strcpy(str1,str2)函数能够将str2中的内容复制到str1中,为什么还需要函数返回值?应该是方便实现链式表达式,比如:

int i_length = strlen(strcpy(str1,str2));

延伸 · 阅读

精彩推荐