当前位置: 首页 > news >正文

做网上贸易哪个网站好站长工具友链检测

做网上贸易哪个网站好,站长工具友链检测,上海人才网官网招,本科网站开发毕业设计目录 1、memcpy函数 memcpy函数的模拟实现 2、memmove函数 memmove函数的模拟实现 3、memset函数 4、memcmp函数 1、memcpy函数 描述: C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。 声明&…

目录

1、memcpy函数

memcpy函数的模拟实现

2、memmove函数

memmove函数的模拟实现

3、memset函数

4、memcmp函数


1、memcpy函数

描述:

C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1

声明:

void *memcpy(void *str1, const void *str2, size_t n)

参数:

  • str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
  • str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
  • n -- 要被复制的字节数。

返回值:

该函数返回一个指向目标存储区 str1 的指针。

用法:

#include <stdio.h>
#include <string.h>
int main()
{int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[20] = { 0 };memcpy(arr2, arr1, 20);//20 字节数int i = 0;for (i = 0; i < 20; i++){printf("%d ", arr2[i]);}

结果:

memcpy函数的模拟实现

#include <stdio.h>
#include <string.h>
#include <assert.h>void* my_memcpy(void* str1, void* str2, size_t n)
{void* ret = str1;assert(str1 != NULL);assert(str2 != NULL);while (n--){*(char*)str1 = *(char*)str2;//将str2的字符赋给str1str1 = (char*)str1 + 1;//跳到下一个字节str2 = (char*)str2 + 1;//跳到下一个字节}return ret;
}
int main()
{int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[20] = { 0 };my_memcpy(arr2, arr1, 20);//20 字节数int i = 0;for (i = 0; i < 20; i++){printf("%d ", arr2[i]);}return 0;
}

这里不能写成str1++,因为str1是void*指针。也不能写成(char*)str1++,因为强转是临时的,但是可以这样写,((char*)str1)++。 

结果:

 

2、memmove函数

和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。

如果原空间和目标空间出现重叠,就得使用memmove函数处理。

描述:

C 库函数 void *memmove(void *str1, const void *str2, size_t n) 从 str2 复制 n 个字符到 str1,但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。

声明:

void *memmove(void *str1, const void *str2, size_t n)

参数:

  • str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
  • str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
  • n -- 要被复制的字节数。

返回值:

该函数返回一个指向目标存储区 str1 的指针。

用法:

#include <stdio.h>
#include <string.h>int main()
{const char dest[] = "oldstring";const char src[] = "newstring";printf("Before memmove dest = %s, src = %s\n", dest, dest);memmove(dest, src, 9);printf("After  memmove dest = %s, src = %s\n", dest, dest);return(0);
}

结果:

memmove函数的模拟实现

数组的地址是从低到高的

#include <stdio.h>
#include <assert.h>
void* my_memmove(void* str1, const void* str2, size_t n)
{assert(str1 != NULL);assert(str2 != NULL);void* ret = str1;if (str1 < str2){//从前向后while (n--){*(char*)str1 = *(char*)str2;str1 = (char*)str1 + 1;str2 = (char*)str2 + 1;}}else{//从后向前while (n--){*((char*)str1 + n) = *((char*)str2 + n);}}return ret;
}int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr + 2, arr, 5 * sizeof(int));int i = 0;for (i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;
}

3、memset函数

描述:

C 库函数 void *memset(void *str, int c, size_t n) 用于将一段内存区域设置为指定的值。

memset() 函数将指定的值 c 复制到 str 所指向的内存区域的前 n 个字节中,这可以用于将内存块清零或设置为特定值。

在一些情况下,需要快速初始化大块内存为零或者特定值,memset() 可以提供高效的实现。

在清空内存区域或者为内存区域赋值时,memset() 是一个常用的工具函数。

声明;

void *memset(void *str, int c, size_t n)

参数:

  • str -- 指向要填充的内存区域的指针。
  • c -- 要设置的值,通常是一个无符号字符。
  • n -- 要被设置为该值的字符数。

返回值:

该值返回一个指向存储区 str 的指针。

用法:

#include <stdio.h>
#include <string.h>int main ()
{char str[50];strcpy(str,"This is string.h library function");puts(str);memset(str,'$',7);puts(str);return(0);
}

结果:

4、memcmp函数

描述:

C 库函数 int memcmp(const void *str1, const void *str2, size_t n)) 把存储区 str1 和存储区 str2 的前 n 个字节进行比较。

声明:

int memcmp(const void *str1, const void *str2, size_t n)

 参数:

  • str1 -- 指向内存块的指针。
  • str2 -- 指向内存块的指针。
  • n -- 要被比较的字节数。

返回值:

  • 如果返回值 < 0,则表示 str1 小于 str2。
  • 如果返回值 > 0,则表示 str1 大于 str2。
  • 如果返回值 = 0,则表示 str1 等于 str2。

用法:

#include <stdio.h>
#include <string.h>int main ()
{char str1[15];char str2[15];int ret;memcpy(str1, "abcdef", 6);memcpy(str2, "ABCDEF", 6);ret = memcmp(str1, str2, 5);if(ret > 0){printf("str2 小于 str1");}else if(ret < 0) {printf("str1 小于 str2");}else {printf("str1 等于 str2");}return(0);
}

结果:

str2 小于 str1

http://www.yayakq.cn/news/589039/

相关文章:

  • 网站开发常见问题总结企业网站的建设的功能定位
  • 网站建设培训费用电子商务有什么职业
  • 武安建设局网站手机wordpress主题
  • 河南省建设厅建筑业信息网官网网站优化排名推广
  • 如何与别的网站做友情链接网站制作公司 深圳
  • 东莞合一网络科技有限公司鞍山做网站优化公司
  • 池州网站优化十大室内设计网站
  • 企业网站建设多少钱个人简历网页制作教程
  • 哪些网站可以用来做百科参考h5手机网站开发
  • 上海的设计网站有哪些内容常州网站制作哪家好
  • 请专业公司做个网站要花多少钱wordpress安装不
  • 淘宝 网站建设 发货南宁网站建设找建站通
  • 怎样用网站做单笔外贸广州企业展厅设计公司
  • 天津网站建设哪家做得好wordpress转微信支付
  • 电站建设招聘网站营销软文范文
  • 网站建设收获公众号推广平台
  • 网站开发选择什么软件网络营销与直播电商专业就业方向
  • 经典网站模板下载新闻热点事件2024最新
  • 网站建设丿金手指下拉9沈阳推广网站
  • 湖北建站网站建设原创
  • 优秀网站设计欣赏wordpress怎么上传网站
  • 网站开发完整项目平台网站开发北京工商注册查询系统官网
  • 网站设计制作 一年价格网络营销是指
  • 网站快速排名的方法wordpress主题太难看了
  • 那些做测评的网站网站云服务器租用
  • phpcms v9做网站佛山短视频拍摄
  • 校园网站建设需要数据库吗网站开发总结报告
  • 做异形建筑的网站阿里巴巴网站建设免费
  • 怎样做代刷网站长wordpress电视剧播放器
  • 汕头企业模板建站怎么推广软件让别人下载