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

一个网站如何挣钱短视频公司网站建设方案

一个网站如何挣钱,短视频公司网站建设方案,哈尔滨网站设计哪里有做,岳阳棋牌软件定制开发公司文章目录 一、memcpy函数的使用和模拟实现1.1 memcpy函数的使用1.2 memcpy函数的模拟实现 二、memmove函数的使用和模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现 三、memset函数的使用3.1 menset函数的使用 四、memcmp函数的使用4.1 memcmp函数的使用 学海无涯苦作… 文章目录 一、memcpy函数的使用和模拟实现1.1 memcpy函数的使用1.2 memcpy函数的模拟实现 二、memmove函数的使用和模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现 三、memset函数的使用3.1 menset函数的使用 四、memcmp函数的使用4.1 memcmp函数的使用 学海无涯苦作海 创作不易宝子们如果这篇文章对你们有帮助的话别忘了给个免费的赞哟~ 一、memcpy函数的使用和模拟实现 函数原型 void * memcpy ( void * destination, const void * source, size_t num );内存复制块 将num字节的值从源指向的位置直接复制到目标指向的内存块。源指针和目标指针所指向的对象的底层类型与此函数无关;结果是数据的二进制副本。该函数不检查源中是否有任何终止null字符——它总是精确地复制num个字节。为了避免溢出目标参数和源参数所指向的数组的大小应该至少为num字节并且不应该重叠(对于重叠的内存块memmove是一种更安全的方法)。 1.1 memcpy函数的使用 【示例】将arr1中的前5个元素拷贝到arr2中 #includestdio.h #includestring.hint main() {int arr1[] { 1,2,3,4,5,6,7,8,9,10 };int arr2[20] { 0 };memcpy(arr2, arr1, 20);for (int i 0; i 20; i){printf(%d , arr2[i]);}return 0; }1.2 memcpy函数的模拟实现 模拟思路 函数参数和返回类型mencpy不仅可以将拷贝整形数据其他的数据类型也可以拷贝即参数类型根据传入的数据类型决定需要接受任意类型的地址所以参数类型可以定义成void*因为src是原数据我们不期望它被修改所以要加const进行修饰还需要指定拷贝num字节的值即num要为非负数为了避免传入进来的num是一个负数可以将num定为size_t类型memcpy返回的是目标空间的起始地址即返回类型我们也定为void* 。 函数体首先用assert断言判断传入进来的是否为空指针void* 类型的指针不可以直接解引用这里的num是指字节数不同的数据类型所占的字节数不同所以最好一个一个字节访问即将 void* 强转成 char* (解引用时一次访问一个字节)类型每访问一个字节后就自增一拷贝完成后这时的dest已经不再指向首元素地址所以在这之前要创建一个void* 的指针记录dest最后返回记录dest的指针即可。 模拟代码 #includestdio.h #includeassert.hvoid* my_memcpy(void* dest, const void* src, size_t num) {assert(dest src);void* ret dest;while (num--){*(char*)dest *(char*)src;src (char*)src 1;dest (char*)dest 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);for (int i 0; i 20; i){printf(%d , arr2[i]);}return 0; }注意memcpy函数不可以拷贝重叠的内存块(虽然也能实现)但不安全对于重叠的内存块memmove是一种更安全的方法。 二、memmove函数的使用和模拟实现 函数原型 void * memmove ( void * destination, const void * source, size_t num );移动内存块 将num字节的值从源指向的位置复制到目标指向的内存块。复制就像使用了中间缓冲区一样进行从而允许目标和源重叠。源指针和目标指针所指向的对象的底层类型与此函数无关;结果是数据的二进制副本。该函数不检查源中是否有任何终止null字符——它总是精确地复制num个字节。为了避免溢出目的参数和源参数所指向的数组的大小至少为num字节。 memcpy与memmove的区别就在于memmove可以复制重叠的内存块。 2.1 memmove函数的使用 【示例】将arr1中的12345这几个元素拷贝到arr1中的34567的位置。 #includestdio.h #includestring.h int main() {int arr1[] { 1,2,3,4,5,6,7,8,9,10 };memmove(arr1 2, arr1, 5 * sizeof(int));for (int i 0; i 10; i){printf(%d , arr1[i]);}return 0; }2.2 memmove函数的模拟实现 模拟思路 函数参数和返回类型和memcpy函数一致这里就不多作介绍了。 函数体这里总体要分两种情况一种是destsrc另一种就是destsrc对于第一种情况需要从前向后拷贝对于第二种情况需要从后向前拷贝至于不重叠的话无论是从前向后还是从后向前都是可以的。从前向后拷贝的方法和memcpy是一致的这里就不多说了从后向前拷贝也比较简单src强转成 char* 之后加上num就是最后一个字节然后num不断自减就可以实现从后向前拷贝。 模拟代码 #includestdio.h #includeassert.h void* my_memmove(void* dest, const void* src, size_t num) {assert(dest src);void* ret dest;if (dest src){// 前--后while (num--){*(char*)dest *(char*)src;src (char*)src 1;dest (char*)dest 1;}}else {// 后--前while (num--){*((char*)dest num) *((char*)src num);}}return ret; }int main() {int arr1[] { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr1 2, arr1, 5 * sizeof(int));for (int i 0; i 10; i){printf(%d , arr1[i]);}return 0; }三、memset函数的使用 函数原型 void * memset ( void * ptr, int value, size_t num );填充内存块 将ptr指向的内存块的前num个字节设置为指定的值(解释为unsigned char)。 参数说明 ptr 指向要填充的内存块的指针。 value 需要设置的值。该值作为int类型传递但函数使用该值的unsigned char转换来填充内存块。 num 要设置为该值的字节数。size_t是一个无符号整型。 3.1 menset函数的使用 【示例】将arr数组中的hello替换成x #includestdio.h #includestring.h int main() {char arr[] hello world;memset(arr, x, 5);printf(%s\n, arr);return 0; }注意这里的num指的是该值的字节数。 四、memcmp函数的使用 函数原型 int memcmp ( const void * ptr1, const void * ptr2, size_t num );比较两个内存块 将ptr1所指向的内存块的前num字节与ptr2所指向的前num字节进行比较如果它们都匹配则返回0如果不匹配则返回不同于0的值表示哪个值更大。 参数说明 ptr1 指向内存块的指针。 ptr2 指向内存块的指针。 num 要比较的字节数。 注意与strcmp不同该函数在找到空字符后不会停止比较。 return value(返回值)indicates(含义)0在两个内存块中不匹配的第一个字节在ptr1中的值低于ptr2中的值(如果作为unsigned char值计算)0两个内存块的内容是相等的.0在两个内存块中不匹配的第一个字节在ptr1中的值大于ptr2中的值(如果作为unsigned char值计算) 4.1 memcmp函数的使用 【示例】比较arr1数组和arr2数组中前16个字节在比较前17个字节。 #includestdio.h #includestring.h int main() {int arr1[] { 1,2,3,4,5,6,7 };int arr2[] { 1,2,3,4,8,8,8 };int ret1 memcmp(arr1, arr2, 16);int ret2 memcmp(arr1, arr2, 17);printf(%d\n, ret1);printf(%d\n, ret2);return 0; }分析一个整型占4个字节比较前16个字节就是比较前4个元素前4个元素都是一样的所以返回0。但从17个字节开始arr1和arr2数组就开始不同了arr1是05而arr2是0808大于05所以返回-1。
http://www.zqtcl.cn/news/398350/

相关文章:

  • 一个网络空间如何做两个网站哪个网站兼职做设计比较好
  • jquery代码做的网站免费搭建网站模板
  • 铁路建设监理协会官方网站邯郸市网
  • 马鞍山集团网站建设客流分析系统公司
  • 淘客网站怎么做啊抖音怎么挂小程序赚钱
  • 在哪里申请网站域名美妆销售网站开发的目的
  • 网站自动跳转施秉网站建设
  • 聊城做网站的公司咨询学校网站模板 dedecms
  • 网站域名查询赣州网站设计有哪些
  • 网站设计做多宽150m网站空间流量大吗
  • 制作php网站用什么软件东莞东坑网站建设
  • 怎样做网站外部样式wordpress爱找主题
  • 自己搭建服务器做网站要多久问答网站如何优化
  • 网站用的服务器小程序拉新项目
  • 建设银行 访问的网站出错珠宝类网站模板
  • 网站百度关键词排名软件xampp里wordpress安装教程
  • 杭州网站设计建立企业网站专业做电脑系统下载网站好
  • 哈尔滨建设网站成本网站建设无广告
  • 发布网站搭建教程云排名网站
  • 无锡大型网站建设房地产景区网站建设方案
  • 自学网站建设工资公众号怎么开通直播功能
  • 网站建设上市公司wordpress park主题
  • 百度网站建设一年多少钱奇艺广州网站建设 熊掌号
  • 建设网站怎么收费标准网站和自媒体都可以做
  • 网站自己怎么做无锡常规网络营销是什么
  • 活泼风格的网站crm免费客户管理系统
  • 网站系统发生错误百度seo灰色词排名代发
  • 免费做名片儿的网站wordpress grace6
  • 有关网站开发的创意四川工程造价信息网官网
  • 网站目录结构北京注册公司地址可以是住宅吗