memcmp 和 memcpy使用

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;

int main()
{
    typedef int Status[3];
    int a[3][3];

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            a[i][j] = i*3 + j + 1;
        }
    }

    Status &b = a[0];       //1 2 3
    Status &c = a[1];       //4 5 6
    Status &d = a[2];       //7 8 9
    //test memcmp  比较 b, c元素 1.b > c: 1 , 2.b == c: 0, 3.b < c: -1
    cout << memcmp(b, c, sizeof(c)) << endl;
    //test memcpy, 将 c数组元素都拷贝到d中
    memcpy(&d, &c, sizeof(c));
    for (int i = 0; i < 3; i++) {
        cout << d[i] << " ";
    }
    for (int i = 0; i < 3; i++) {
        cout << a[2][i] << " ";        //同时也改变了 a[2]这行数据
    }
    //这两个函数,完成整块内存的比较和复制, 比循环比较和赋值要快 

}
时间: 2024-10-18 20:16:29

memcmp 和 memcpy使用的相关文章

不使用库函数、自己编写的(strlen、strcpy、strcmp、strcat、memcmp、memcpy、memmove)

//求字符串长度的函数int my_strlen(const char* pStr){assert(pStr != NULL);int length = 0;while (*pStr++ != '\0') {length++;}return length;}//字符串拷贝函数char* my_strcpy(char* strDest, const char* strSrc){assert(strDest != NULL && strSrc != NULL);char* pDest = st

论久违的八数码问题——小试牛刀(2)

八数码问题 八数码问题也称为九宫问题.在3×3的棋盘,摆有八个棋子,每一个棋子上标有1至8的某一数字,不同棋子上标的数字不同样.棋盘上另一个空格,与空格相邻的棋子能够移到空格中.要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤.所谓问题的一个状态就是棋子在棋盘上的一种摆法.棋子移动后,状态就会发生改变.解八数码问题实际上就是找出从初始状态到达目标状态所经过的一系列中间过渡状态.——摘自DALAO笔记 {http://www.tuicool

memory库函数的实现

下面主要对常用的几个memory库函数的实现(memcpy.memmove.memset.memcmp): memcpy函数与memmove函数: 相同点: 两者实现的功能均为从src拷贝count个字符到dest. 不同点: 1.memcpy函数不考虑内存是否有覆盖的问题,也就是说他只负责完成拷贝工作,至于拷贝后的值正确与否,它是不理会的. 2.memmove函数考虑了内存覆盖的问题:1)当无覆盖情况时,功能及拷贝结果与memcpy函数相同: 2)当有内存覆盖时,能够确保拷贝后的值得正确性.

u-boot-2009.11 移植 step1

一.裁剪和交叉编译环境变量设置 u-boot-2009.11-psp03.00.01.06 改名 u-boot-2019.11,简洁:请不要担心总的 Makefile (根目录下,不要说我很难交流)不识别,认真读过 Makefile 的道友应该知道,总的 Makefile 指定的名称为 u-boot-*,只要目录下有 u-boot- 开头的目录就 OK!下面步骤可做可不做,不做的话怎么办?在 DVSDK 目录下使用 make,调用 DVSDK 大工程的配置信息即可. 对 u-boot-2009.

memcpy、memmove、memset、memchr、memcmp、strstr详解

第一部分 综述 memcpy.memmove.memset.memchr.memcmp都是C语言中的库函数,在头文件string.h中.memcpy和memmove的作用是拷贝一定长度的内存的内容,memset用于缓冲区的填充工作,memchr用于字符的查找工作,memcmp用于比较内存中缓冲区的大小. 第二部分  介绍 1.memcpy和memmove memcpy()--拷贝内存内容 表头文件:#include<string.h>或#include<cstring> 定义函数:

memset,memcpy,memcmp用法

void* memset(void *s, int ch, size_t n); 将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值. 例如:memset(lpMyStruct, 0, sizeof(MyStruct));初始化结构体. void *memcpy(void *dest, const void *src, size_t n); 从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. 注意:如果n大于dest所指向的内存大

走进C标准库(7)——"string.h"中函数的实现memcmp,memcpy,memmove,memset

我的memcmp: 1 int memcmp(void *buf1, void *buf2, unsigned int count){ 2 int reval; 3 while(count && !(reval = (*(unsigned char *)buf1) - (*(unsigned char *)buf2))) 4 { 5 buf1 = (unsigned char *)buf1 + 1; 6 buf2 = (unsigned char *)buf2 + 1; 7 --count

memset memcmp memcpy memmove 自己实现

memset memcmp memcpy memmove 自己实现 memset #include <stdio.h> #include <memory.h> #include <assert.h> void* my_memset(void* dest, int c, size_t cnt){ assert(NULL != dest); char *a = (char*)dest; while(cnt-- > 0){ *a++ = c; } return dest

C++面试题4:memcpy的用法

C++面试题4:memcpy的用法 memcpy函数用于把资源内存(src所指向的内存区域)拷贝到目标内存(desk所指向的内存区域):拷贝多少个?有一个size变量控制 用法:可以拷贝任何类型的对象,因为函数的参数类型是void*,也就是说传进去的实参可以是int *,short*,char*等等. 原型:void *memcpy(void *desc, void *src, unsigned int count) 实现memcpy void *memcpy(void *desc,const