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属性
- 下一篇: 获取指针 指向的内存大小