1.如何给变量赋一个指定地址并赋值
答1:int *p; p=(int *)0x123456; *p=0x1234;
答2:(unsigned int *)(0x123456) = 0x1234; //数值强转地址
2.如何将变量定义到指定的地址
具体要看环境(还没搞懂)
①linux
unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00 变量@地址
②keil
uint8_t cnt __attribute__((at(0x20008000))); //格式固定下划线为两个下划线,括号必须那么多层
3.如何跳到指定地址执行程序
第一种办法:goto
第二种办法://必须知道类型
答案1: ( (void (*)(void)) 100 )();
答案2: ( (void (*)(void)) 100 )();
//解释
void (*)(void) --->函数指针类型
(void (*)(void)) 100 --->将 100 强制转换为 函数指针类型
//函数定义
void func(void)
{
}
//函数调用
func();
//如何使用函数指针来执行?
void (*pF)(void) = func; --->使用函数指针指向func函数
pF(); --->利用函数指针调用函数
//总结:第一种通过固定指定地址来调用函数。
第二种是动态利用函数指针来调用函数。
- &函数名 和 函数名 都是函数的地址
*函数名是其返回值