This question already has an answer here:
Pointer to a specific fixed address
(1个答案)
在10个月前关闭。
我是一名新手嵌入式系统开发人员,实际上,这是我的第一个问题,如果你们能回答我的问题,以及如果您有任何有用的嵌入式系统网站,将其发布将不胜感激。
u8之后的第二个指针在此代码中是什么意思?
加()就像
因此
例如,将u8定义为char并将0x3A替换为全局var的地址:
编译与执行:
(1个答案)
在10个月前关闭。
我是一名新手嵌入式系统开发人员,实际上,这是我的第一个问题,如果你们能回答我的问题,以及如果您有任何有用的嵌入式系统网站,将其发布将不胜感激。
u8之后的第二个指针在此代码中是什么意思?
#define DDRA (*(volatile u8*) 0x3A)
最佳答案
u8之后的第二个指针在此代码中是什么意思?
我想你说的是第二个“ *”u8*
是类型“指向u8的指针”
(*(volatile u8*) 0x3A)
加()就像
(*((volatile u8*) 0x3A))
因此
0x3A
被视为u8(u8*
)的地址,并且第一个“ *”取消引用它,因此(*((volatile u8*) 0x3A))
尝试在地址0x3A
返回u8(如果0x3A为无效的地址)或在作业的左侧尝试在地址0x3A处写入例如,将u8定义为char并将0x3A替换为全局var的地址:
#include <stdio.h>
#define DDRA (*(volatile u8 *) &A)
typedef char u8;
int A = 'a';
int main()
{
printf("%c\n", DDRA);
DDRA = 'b';
printf("%c\n", DDRA);
return 0;
}
编译与执行:
pi@raspberrypi:/tmp $ gcc -pedantic -Wextra -Wall c.c
pi@raspberrypi:/tmp $ ./a.out
a
b
关于c - 了解指针的用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55781731/
10-12 20:58