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

做网站设计要适配到手机端么百度知道官网

做网站设计要适配到手机端么,百度知道官网,深圳南山网站建设公司,网站标题大全在复习完字符函数和字符串函数之后,今天让我们复习一下内存函数吧.这一块的东西不太多,并且与之前的字符串函数有一些地方很相似,所以这里应该会比较轻松. memcpy使用和模拟实现 老规矩,先看函数原型 void * memcpy ( void * destination, const void * source, size_t num );…

        在复习完字符函数和字符串函数之后,今天让我们复习一下内存函数吧.这一块的东西不太多,并且与之前的字符串函数有一些地方很相似,所以这里应该会比较轻松.

memcpy使用和模拟实现

        老规矩,先看函数原型

void * memcpy ( void * destination, const void * source, size_t num );

        注:在VS中把这个函数升级了,使他可以正确拷贝有重叠的空间,但是拷贝有重叠的空间是不建议使用,因为其他环境下是不一定可以的.对于重叠的内存,交给memmove来处理.

        下面看下简单使用:

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

        输出结果如下 

        下面看下他的实现.因为是内存空间的拷贝,不知道这块内存中存了什么东西,所以要一个字节一个字节的拷贝,所以在内部选择char*的指针.

void* my_memcpy(void* p1, void* p2, int n)
{assert(p2);void* p = p1;while (n){*(char*)p1 = *(char*)p2;p1 = (char*)p1 + 1;p2 = (char*)p2 + 1;n--;}return p;
}

memmove使用和模拟实现 

        在上面就提到的memmove这个函数,可以进行重叠空间的拷贝.下面就让我们看下它的函数原型.

void * memmove ( void * destination, const void * source, size_t num );

        下面来看下使用情况: 

#include<stdio.h>
#include<string.h>int main()
{int arr1[10] = { 1,2,3,4,5,6,7,8,9,0 };memmove(arr1 + 2, arr1, sizeof(int) * 5);for (int i = 0; i < 10; i++){printf("%d ", arr1[i]);}return 0;
}

        输出结果见下: 

        下面来看下它的模拟实现.看下图,可以看到只有重叠时要注意拷贝的方向,所以可以总结为dest<src是从前向后拷贝,dest>src是从后向前拷贝.下面看实现代码.

 

void* my_memmove(void* dest, void* src, int n)
{assert(dest && src);void* p = dest;if (dest == src){return p;}if (dest < src)//从前向后{while (n){*(char*)dest = *(char*)src;dest = (char*)dest + 1;src = (char*)src + 1;n--;}}else//从后向前{while (n--){*((char*)dest + n) = *((char*)src + n);}}return p;
}

memset函数的使用

        函数原型:

void * memset ( void * ptr, int value, size_t num );

        memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容.

        下面是使用,

int main()
{char arr[10] = { "hello" };memset(arr, 'x', 10);for (int i = 0; i < 10; i++){printf("%c ", arr[i]);}return 0;
}

        输出结果见下:

        常见错误:用它去初始化int数组等.如下:

int main()
{int arr[10] = { 0 };memset(arr, '1', sizeof(int)*10);for (int i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;
}

        可以看出输出结果与想象一点也不一样.因为这个函数是以字节为单位初始话,所以不可以直接这样初始化其他类型.但是空间置0用它可以.(上面出现结果是因为int是0x 01 01 01 01).

memcmp函数的使用

        函数原型

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

        可以看到他的返回值与strcmp一样.

        下面是使用,

int main()
{char buffer1[] = "DWgaOtP12df0";char buffer2[] = "DWGAOTP12DF0";int n;n = memcmp(buffer1, buffer2, sizeof(buffer1));if (n > 0)printf("'%s' is greater than '%s'.\n", buffer1, buffer2);else if (n < 0)printf("'%s' is less than '%s'.\n", buffer1, buffer2);elseprintf("'%s' is the same as '%s'.\n", buffer1, buffer2);return 0;
}

        输出结果

        也可以是输出用%d,直接观察他的返回值.

        以上就是这部分的所有内容啦,可以联系着字符串函数加深理解.以上就是这段的复习了.

http://www.dtcms.com/wzjs/202897.html

相关文章:

  • 失物招领网站开发项目需求分析营销推广公司案例
  • 在word上怎么做网站链接seo商学院
  • 网站建设制作深圳抖音网络营销案例分析
  • 网站建设行业产业链分析seo优化排名推广
  • 东莞网站制作多少钱网络推广外包怎么样
  • 家教网站如何做seo优化网站教程百度
  • 南昌寻南昌网站设计seo优化6个实用技巧
  • 自己做网站推广试玩品牌广告投放
  • b2c商城网站模版如何创建自己的网站
  • 没有网站怎么做链接视频网站搜索引擎拓客
  • 专做西餐的网站线上线下推广方案
  • 做网站 天津近期国际新闻20条
  • 武汉建设集团有限公司英文网站seo发展前景
  • h5页面如何制作seo工具是什么意思
  • 搭建服务器教程四川seo平台
  • 中企动力主要是做什么的连云港seo优化
  • 石河子规划建设局网站网络营销策划书步骤
  • 怎么做国外网站世界500强企业名单
  • 橙子建站有风险吗怎么上百度推广产品
  • 网站怎么做成二维码南宁seo排名优化
  • wordpress图片间隙重庆seo整站优化外包服务
  • 查看WordPress网站插件创建网站需要多少资金
  • 海口房产网站建设如何推广宣传一个品牌
  • 网站被屏蔽怎么访问企业网站建设专业服务
  • 手机访问网站建设中哪些行业适合做seo
  • 武汉城乡建设委员网站首页站长工具域名解析
  • dede织梦做的网站 栏目页有切换js 怎么循环子栏目 调子栏目长沙网站优化效果
  • 滕州住房和城乡建设局网站seo教程seo官网优化详细方法
  • 网站开发网站开发公司哪家好线上推广有哪些平台效果好
  • 16岁做分期网站自媒体发布平台