void指针强转结构体指针问题
====================================================================================================================================
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
",test);
#define GPIO ((mystruct *)(test))
GPIO->a = 10;
GPIO->b = 20;
GPIO->c = 30;
printf("(&(GPIO->a)) is %lx
",(&(GPIO->a)));
printf("(&(GPIO->b)) is %lx
",(&(GPIO->b)));
printf("(&(GPIO->c)) is %lx
",(&(GPIO->c)));
printf("GPIO->a is %d
",GPIO->a);
printf("GPIO->b is %d
",GPIO->b);
printf("GPIO->c is %d
",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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 认识JavaScript数组对象的length属性
- 下一篇: 获取指针 指向的内存大小
