【C 语言】字符串拷贝 ( 函数形参使用推荐方法 | 凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 | 引入 辅助 局部 指针变量 )
文章目录
- 一、函数形参使用推荐方法
- 二、完整代码示例
一、函数形参使用推荐方法
在函数中 , 形参 中的 指针变量 , 不建议直接使用 ;
推荐 在 函数中 , 定义 局部 指针变量 , 接收 形参中的 指针变量 , 具体操作的是 函数中 定义的 局部指针变量 ;
直接使用 *to_tmp++
样式的代码 , 会改变指针指向 , 有可能会导致错误 , 一旦出错 , 根本无法排查 ;
如果 将 数组首地址 的 常量指针 的 指针指向 进行修改 , 直接就报错了 ;
函数形参 的 值 , 不要轻易进行改变 , 因此一般函数的形参 , 都定义为 const char *
指针常量 类型 ;
引入 辅助 局部变量 , 接收 函数 形参变量 ;
凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 ;
代码示例 :
/** 实现字符串拷贝 ( 实现了模块化 )* 将 from 指针指向的字符串 拷贝到 to 指针指向的字符串换*/
void str_copy(char *from, char *to)
{// 使用局部变量 接收 形参char *from_tmp = from;char *to_tmp = to;// 判断 参数中的 指针变量 不为空if(from_tmp == NULL || to_tmp == NULL){// 这两个指针有任何一个为空 , 都直接退出return;}// 从 from 指针指向的字符 拷贝到// to 指针指向的字符// 如果拷贝的值不是 \0 , 则指针累加// 如果拷贝的值是 \0// 这样就不需要额外拷贝 \0 字符了while((*to_tmp++ = *from_tmp++));
}
二、完整代码示例
代码示例 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>/** 实现字符串拷贝 ( 实现了模块化 )* 将 from 指针指向的字符串 拷贝到 to 指针指向的字符串换*/
void str_copy(char *from, char *to)
{// 使用局部变量 接收 形参char *from_tmp = from;char *to_tmp = to;// 判断 参数中的 指针变量 不为空if(from_tmp == NULL || to_tmp == NULL){// 这两个指针有任何一个为空 , 都直接退出return;}// 从 from 指针指向的字符 拷贝到// to 指针指向的字符// 如果拷贝的值不是 \0 , 则指针累加// 如果拷贝的值是 \0// 这样就不需要额外拷贝 \0 字符了while((*to_tmp++ = *from_tmp++));
}int main()
{// 定义一个字符串数组// "Hello World!" 常量在 全局区 的常量区// 然后 拷贝到了 栈内存中的 array 数组中char array[] = "Hello World!";// 在栈内存中定义 char *指针// 在堆内存分配 20 字节内存 , 用于存放字符串char *buffer = malloc(20);// 调用字符串拷贝函数str_copy(array, buffer);// 打印拷贝结果printf("buffer = %s\n", buffer);// 命令行不要退出system("pause");return 0;
}
执行结果 :
【C 语言】字符串拷贝 ( 函数形参使用推荐方法 | 凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 | 引入 辅助 局部 指针变量 )相关推荐
- c语言 字符串拷贝函数作用,C语言不使用strcpy函数如何实现字符串复制功能
Ⅰ )字符串复制函数 字符串复制是字符串操作中比较常用的操作之一.C语言库函数中提供的字符串复制函数是:strcpy函数.该函数的功能为:把源字符数组中的字符串复制到目的字符数组中,字符串结束标志&q ...
- 如何字符串拷贝函数的几种方法,你猜哪个效率最高?
strcpy,即string copy(字符串复制)的缩写. 是C语言标准库中实现字符串拷贝的一个函数. 各大公司笔试题最喜欢考的一道题,快来看看,你会几种方法? 问:你会如何实现这个函数呢? 1 v ...
- 【C语言】字符串拷贝函数(strcpy)与内存拷贝函数的不同及内存拷贝函数(memcpy)的模拟实现
目录 字符串拷贝函数(strcpy) 函数原型 应用实例 我们将一个存放"abcdefg"的字符数组arr的内容拷贝到字符数组brr之中. 缺点 内存拷贝函数(memcpy) 函数 ...
- c语言字符串 从后拷贝,C语言字符串拷贝
C语言字符串拷贝利用指针操作,要清楚知道指针的指向 代码如下: #include #include #include char* my_strcpy1(char* dest, const char* ...
- 字符串拷贝函数strdup()
char *strdup(const char *s); 注: strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现. 字符串拷贝函数strdup()内部实现如下: ...
- C语言-字符串拷贝(2)strncpy
C语言-字符串拷贝(2)strncpy 1. strncpy 1 定义: 2 原型: 3 功能: 4 说明: 5 缺点: 6 实现-原始版1 7 实现-原始版2 8. n 的长度大于 strlen(d ...
- 17个C语言字符串处理函数
C语言字符串处理函数 1. gets() 2.fgets() 3.puts() 4.fputs() 6.strcpy() 7.strncpy() 8.strcat() 9.strncat() 10.s ...
- 字符串拷贝函数memcpy()、strncpy()和snprintf()性能之比较
问题: 函数memcpy(dest, src, sizeof(dest)).strncpy(dest, src, sizeof(dest))和snprintf(dest, sizeof(dest), ...
- C语言字符串做函数参数
C语言字符串做函数参数 深入理解指针 一维字符串内存模型:两种 典型错误知多少 深入理解指针 注意 指针和数组的巨大区别 char *p = "abcdefg"; Char *bu ...
最新文章
- Python的知识点 plt.plot()函数细节
- 微信小程序把缓存的数组动态渲染到页面
- 中文地址转英文地址网站_SSL证书可能让你网站源IP地址暴露
- 最佳学习方法(3)听课--听一反三
- laravel blade模板
- 卷积神经网络精确率不增反降_深度学习 第四门课:卷积神经网络(Convolutional Neural Networks)...
- Ubuntu下搭建Janus Server
- 苹果iOS开发深入浅出Cocoa之类与对象
- Java泛型报错的解决办法
- 《JAVA程序设计基础与应用》pdf 附下载链接
- multisim中pwl_Multisim 14电路设计与仿真
- Abaqus单元选择
- 【IoT】卫朋:6000+ 字解读 | 2022年产品人必备的7个产品管理工具(1.0版)
- 【读论文】基于三支决策的不平衡数据过采样方法
- 远程桌面管理_IIS7远程桌面连接工具使用方法
- 计算机word教案设计,信息技术教学:WORD教学设计
- 宇宙是计算机程序,宇宙是被设计好的,和计算机程序100%相似,这些对比看宇宙的运行...
- python语言关键字有哪些_Python之33个关键字是哪些
- 猜帽子颜色问题(阿里巴巴面试题)
- Ubuntu安装显卡驱动弹secure boot