如何记忆复制并复制回char数组?

问题描述 投票:0回答:1

我想将1个字节的变量复制到相对较大的char数组,然后将其复制回来?我该怎么办?

/* memcpy example */
#include <stdio.h>
#include <string.h>

struct Data {
  unsigned char name[40];
  int age;
};

typedef unsigned char       uint8_t;
typedef unsigned short int  uint16_t;

int main ()
{

    uint8_t myval = 8;
    uint8_t myval_2 = 8;
    Data mypass;

    memcpy(&mypass.name, &myval, sizeof(uint8_t));
    memcpy(&mypass.name+1, &myval_2, sizeof(uint8_t));

    uint8_t* myvalnew = nullptr;
    uint8_t* myvalnew_2 = nullptr;

    memcpy(myvalnew, (uint8_t*)&mypass.name, sizeof(uint8_t));
    memcpy(myvalnew_2, (uint8_t*)&mypass.name+1, sizeof(uint8_t));

    return 0;

}

但是我遇到错误。

c++ pointers memcpy
1个回答
1
投票

&mypass.name创建一个指向名称数组的指针,您想要一个指向数组第一个元素的指针,您可以简单地使用mypass.name&mypass.name[0]memcpy在这里是不必要的,因为您可以简单地分配元素:

mypass.name[0] = myval;
mypass.name[1] = myval_2;

您的第二组memcpy将失败,因为您的myvalnew指针为空,我不确定您要在这里实现什么。

© www.soinside.com 2019 - 2024. All rights reserved.