====================================================================================================================================
1.程序,test.c
#include <stdio.h>
#include <stdlib.h>
typedef unsigned long u32; //64位机器为8字节,32位机器为4字节
typedef struct my_struct{
u32 a;
u32 b;
u32 c;
}mystruct;
int main(){
void *test;
test = NULL;
test = malloc(1);
printf("test is %lx\n",test);
#define GPIO ((mystruct *)(test))
GPIO->a = 10;
GPIO->b = 20;
GPIO->c = 30;
printf("(&(GPIO->a)) is %lx\n",(&(GPIO->a)));
printf("(&(GPIO->b)) is %lx\n",(&(GPIO->b)));
printf("(&(GPIO->c)) is %lx\n",(&(GPIO->c)));
printf("GPIO->a is %d\n",GPIO->a);
printf("GPIO->b is %d\n",GPIO->b);
printf("GPIO->c is %d\n",GPIO->c);
free(test);
test = NULL;
return 0;
}
2.编译gcc -o test test.cpp,我的机器是64位ubuntu。
3.结果./test
test is 17f2010
(&(GPIO->a)) is 17f2010
(&(GPIO->b)) is 17f2018
(&(GPIO->c)) is 17f2020
GPIO->a is 10
GPIO->b is 20
GPIO->c is 30