一步一步写算法(自己实现strcpy函数)
来源:互联网 发布:java中类属变量是什么 编辑:程序博客网 时间:2024/06/15 01:40
v 自己编写一个函数,实现strcopy库函数的功能。
#include <stdio.h>void my_copy(char *i,char *j){while(*j != '\0') //遍历字符数组b {*i = *j; //取出数组B中的元素赋值给a i++; //指针指向数组a的下一个地址 j++; //指针指向数组b的下一个地址 }}int main(){char a[10] = {0};char b[10] = {0};printf("Please input the the string of b:\n");scanf("%s",b);my_copy(a,b);printf("a : %s\n",a);}
运行结果:
Please input the string of b:
hello
a : hello
程序二:
#include <stdio.h>void my_copy(char *i,char *j){while(*i++ = *j++); //简练:同时实现取值,赋值,地址加一,三个功能 }int main(){char a[10] = {0};char b[10] = {0};printf("Please input the string of b:\n");scanf("%s",b);my_copy(a,b);printf("a : %s\n",a);return 0;}
运行结果:
Please input the string of b:
hello
a : hello
分析:从以上两个函数可以看出在my_copy函数中,语句while(*i++ = *j++); 就相当于*i = *j; i++;j++;这三句话。语句所实现的功能就是将数组b中的,每一个元素都赋值给b。
那么为什么上面的一个语句就能实现这三个语句的功能呢?
我们首先的先了解这么一个知识点:
*p++和(*p)++的区别
下面举个例子来说明:
Int *p,a;
P = &a;
*p = 3;
那么
Y = *p++:即先将P地址里面保存的数据取出来,再赋值给y,最后将P的地址加一,指向下一个元素
Y = (*p)++:即先将P地址里面保存的值取出来,再赋值给Y,最后将P地址里面保存的内容加一
总结下来,区别也就是一个是地址加一,一个是地址里面保存的内容加一。并且两个语句其实都实现了三个功能。
所以,学会巧妙的使用*p++和(*p)++有利于我们进一步学好算法和指针。
阅读全文
0 0
- 一步一步写算法(自己实现strcpy函数)
- 写程序实现自己的strcpy() 函数
- 自己实现strcpy函数
- 自己实现strcpy函数
- 一步一步写算法(关于malloc函数)
- 自己写一个strcpy(char*dest,char*src),如何在函数内部实现防御性溢出?
- 自己模拟strcpy库函数写的功能函数my_strcpy实现strcpy的功能,完整代码
- 自己写的 字符串函数strcpy
- 自己写的一个strcpy函数
- 一步一步写算法(之函数堆栈显示)
- 一步一步写算法(之函数堆栈显示)
- 一步一步写算法(之)
- 一步一步写算法(开篇)
- 一步一步写算法(之)
- 一步一步写算法(之)
- 一步一步写算法(开篇)
- 一步一步写算法(开篇)
- 一步一步写算法(开篇)
- 迪杰斯特拉算法(学习版)
- 电子邮件知识
- opencv ubuntu编译学习
- 算数类型的尺寸
- IOC AOP的理解
- 一步一步写算法(自己实现strcpy函数)
- touch时间戳
- 浅聊SRAM和DRAM的区别
- 面试问题(spring bean的生成过程)
- @SpringBootApplication的使用【转】
- Struts2使用!动态方法调用无效(转载)
- eclipse连接远程服务器
- java native方法初认知
- 周志华机器学习读后总结 第八、九章