文章目录

  • 一、函数形参使用推荐方法
  • 二、完整代码示例

一、函数形参使用推荐方法


在函数中 , 形参 中的 指针变量 , 不建议直接使用 ;

推荐 在 函数中 , 定义 局部 指针变量 , 接收 形参中的 指针变量 , 具体操作的是 函数中 定义的 局部指针变量 ;

直接使用 *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 语言】字符串拷贝 ( 函数形参使用推荐方法 | 凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 | 引入 辅助 局部 指针变量 )相关推荐

  1. c语言 字符串拷贝函数作用,C语言不使用strcpy函数如何实现字符串复制功能

    Ⅰ )字符串复制函数 字符串复制是字符串操作中比较常用的操作之一.C语言库函数中提供的字符串复制函数是:strcpy函数.该函数的功能为:把源字符数组中的字符串复制到目的字符数组中,字符串结束标志&q ...

  2. 如何字符串拷贝函数的几种方法,你猜哪个效率最高?

    strcpy,即string copy(字符串复制)的缩写. 是C语言标准库中实现字符串拷贝的一个函数. 各大公司笔试题最喜欢考的一道题,快来看看,你会几种方法? 问:你会如何实现这个函数呢? 1 v ...

  3. 【C语言】字符串拷贝函数(strcpy)与内存拷贝函数的不同及内存拷贝函数(memcpy)的模拟实现

    目录 字符串拷贝函数(strcpy) 函数原型 应用实例 我们将一个存放"abcdefg"的字符数组arr的内容拷贝到字符数组brr之中. 缺点 内存拷贝函数(memcpy) 函数 ...

  4. c语言字符串 从后拷贝,C语言字符串拷贝

    C语言字符串拷贝利用指针操作,要清楚知道指针的指向 代码如下: #include #include #include char* my_strcpy1(char* dest, const char* ...

  5. 字符串拷贝函数strdup()

    char *strdup(const char *s); 注: strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现. 字符串拷贝函数strdup()内部实现如下: ...

  6. C语言-字符串拷贝(2)strncpy

    C语言-字符串拷贝(2)strncpy 1. strncpy 1 定义: 2 原型: 3 功能: 4 说明: 5 缺点: 6 实现-原始版1 7 实现-原始版2 8. n 的长度大于 strlen(d ...

  7. 17个C语言字符串处理函数

    C语言字符串处理函数 1. gets() 2.fgets() 3.puts() 4.fputs() 6.strcpy() 7.strncpy() 8.strcat() 9.strncat() 10.s ...

  8. 字符串拷贝函数memcpy()、strncpy()和snprintf()性能之比较

    问题: 函数memcpy(dest, src, sizeof(dest)).strncpy(dest, src, sizeof(dest))和snprintf(dest, sizeof(dest), ...

  9. C语言字符串做函数参数

    C语言字符串做函数参数 深入理解指针 一维字符串内存模型:两种 典型错误知多少 深入理解指针 注意 指针和数组的巨大区别 char *p = "abcdefg"; Char *bu ...

最新文章

  1. Python的知识点 plt.plot()函数细节
  2. 微信小程序把缓存的数组动态渲染到页面
  3. 中文地址转英文地址网站_SSL证书可能让你网站源IP地址暴露
  4. 最佳学习方法(3)听课--听一反三
  5. laravel blade模板
  6. 卷积神经网络精确率不增反降_深度学习 第四门课:卷积神经网络(Convolutional Neural Networks)...
  7. Ubuntu下搭建Janus Server
  8. 苹果iOS开发深入浅出Cocoa之类与对象
  9. Java泛型报错的解决办法
  10. 《JAVA程序设计基础与应用》pdf 附下载链接
  11. multisim中pwl_Multisim 14电路设计与仿真
  12. Abaqus单元选择
  13. 【IoT】卫朋:6000+ 字解读 | 2022年产品人必备的7个产品管理工具(1.0版)
  14. 【读论文】基于三支决策的不平衡数据过采样方法
  15. 远程桌面管理_IIS7远程桌面连接工具使用方法
  16. 计算机word教案设计,信息技术教学:WORD教学设计
  17. 宇宙是计算机程序,宇宙是被设计好的,和计算机程序100%相似,这些对比看宇宙的运行...
  18. python语言关键字有哪些_Python之33个关键字是哪些
  19. 猜帽子颜色问题(阿里巴巴面试题)
  20. Ubuntu安装显卡驱动弹secure boot

热门文章

  1. 2015-10-11 Sunday 晴 ARM学习
  2. sharepoint 2010 显示和隐藏Ribbon区域条
  3. 关于算法的时间复杂度怎么计算
  4. MyBatis-plus使用
  5. 在 Linux 中使用超级用户权限
  6. 从LINQ开始之LINQ to Objects(下)
  7. mysql时间日期操作
  8. 280. Wiggle Sort
  9. NSBundle使用:获取文件路径
  10. Oracle 树操作(select…start with…connect by…prior)