字符串拷贝函数

本文详细解析了一个简单的字符串拷贝函数的实现过程,并解释了为何此类函数需要返回值,旨在帮助读者理解指针及字符串类的内部工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#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));

转载于:https://www.cnblogs.com/nerohwang/p/3482351.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值