C语言里指针问题,程序如下:#define DATA *((Uint16 *)0x100000) *(&DATA+1) = DATA_B; #define DATA *((Uint16 *)0x100000)*(&DATA+1) = DATA_B;
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 06:04:05
C语言里指针问题,程序如下:#define DATA *((Uint16 *)0x100000) *(&DATA+1) = DATA_B; #define DATA *((Uint16 *)0x100000)*(&DATA+1) = DATA_B;
C语言里指针问题,程序如下:#define DATA *((Uint16 *)0x100000) *(&DATA+1) = DATA_B;
#define DATA *((Uint16 *)0x100000)
*(&DATA+1) = DATA_B;
C语言里指针问题,程序如下:#define DATA *((Uint16 *)0x100000) *(&DATA+1) = DATA_B; #define DATA *((Uint16 *)0x100000)*(&DATA+1) = DATA_B;
首先 *((Uint16 *)0x100000) 意思 就是 从 地址 0x100000 处 读取 一个 Uint16 类型的 变量,先把 这个变量 记做 x
#define DATA *((Uint16 *)0x100000) // 以后 遇到 DATA 就用 *((Uint16 *)0x100000) 取代
*(&DATA+1) = DATA_B; //等效于 *(&*((Uint16 *)0x100000)+1) = DATA_B;
含义 是 取x的地址,再+1,再 取指针,这个 变量 记做 y
由于 x 是 Uint16 类型,占 2个字节,所以 指针 +1 就是 地址+2,于是 &y=0x100002,
那么 *(&DATA+1) = DATA_B; 执行的 结果 就是 地址 0x100002 处 的 数据 = DATA_B