使用指针将数据从一个地址复制到另一个地址

Copying data from one address to another using pointers

我正在尝试使用 C 将一个半字(即 16 位)从我的微控制器的一个内存地址移动到另一个内存地址。请查看下面我的简单代码:

#include <stdint.h>

int main(void){

    int16_t *src = (int16_t*)0x20000000; //source memory address
    int16_t *dst = (int16_t*)0x20000016; //destination memory address
    *dst = *src; //dereference both, set destination value to source value
    return 0;
}

我一碰到行 *dst = *src,我就 运行 进入了 Hardfault 异常。我对指针和 dereference/reference 的低理解可能是问题所在。我会很感激一些帮助。

编辑: 有什么方法可以使用赋值运算符 (=) 在一行代码中编写此代码?

您正在写入 0x20000016,它不在 4 字节边界上。如果您的处理器不支持未对齐的读取和写入,这将导致错误。您使用的是什么处理器?