警告:传递“memcpy”的参数 1 使指针来自整数而不进行强制转换

warning: passing argument 1 of ‘memcpy’ makes pointer from integer without a cast

我正在编写将在嵌入式 linux 上 运行 的 c 代码。我必须将数组的内容复制到一块内存中。我定义内存的基地址为:

#define BASE_ADDRESS 0x40000000

现在,当我将数组的内容 memcpy 到基地址时,我收到了从整数创建指针而不进行强制转换的警告。如何删除此警告?这是我的代码:

unsigned int rx1_arr[64] = {0}; //some data is added to this array before memcpy
memcpy(BASE_ADDRESS, &rx1_arr, 64*sizeof(int));

您需要转换为 void 指针

 memcpy((void *)BASE_ADDRESS, rx1_arr, 64*sizeof(int));

rx1_arr前面不需要地址运算符&

rx1_arr&rx1_arr&rx1_arr[0]指向同一个地址但类型不同

正如您在 Documentation 中看到的那样,memcpy 期望第一个参数是 void * 但您给出的 BASE_ADDRESSint.给出的错误是:

note: expected 'void * restrict' but argument is of type 'int'

只需将其转换为 void *

memcpy((void *)BASE_ADDRESS, &rx1_arr, 64*sizeof(int));

Ps :不要在 memcpy 中使用 &rx1_arr,而是使用 rx1_arr