c语言结构体及成员的互换,并且打印结构体地址和成员地址
来源:互联网 发布:中华网络传奇一条龙 编辑:程序博客网 时间:2024/05/22 03:24
#include <stdio.h>#define offsetof(TYPE , MEMBER)((size_t) &((TYPE *)0)->MEMBER)//container_of是给定结构体某个成员的地址反推其结构体地址#define container_of(ptr , type , member)({ \const typeof(((type *)0)->member)*__mptr = (ptr); \(type *)((char *)__mptr - offsetof(type , member));})//#define container(ptr , type , member)(type *)((char *)ptr - offsetof(type , member)) // 返回结构体地址#define container(ptr , type , member)(type *)((char *)ptr) //返回成员的地址struct tag_test{ int i; char s[32]; void *p;};#define print_addr(var) printf(" "#var": %p\n", var)int main(void){ struct tag_test tstr; struct tag_test *ca = container_of(&(tstr.p) , struct tag_test , p); //struct tag_test *ca2 = container(&(tstr.p) , struct tag_test , p); struct tag_test *ca2 = (struct tag_test *)((char *)&(tstr.p)); //打印p成员的地址 print_addr(&tstr); print_addr(ca); print_addr(ca2); return 0;}
0 0
- c语言结构体及成员的互换,并且打印结构体地址和成员地址
- C语言结构体及其成员地址的互算
- C语言根据结构体成员变量的地址,得到结构体的地址
- C语言--通过结构体成员的地址获取结构体变量的地址
- 结构体成员偏移地址
- linux进程描述符、地址空间、文件共享和C语言FILE结构体成员
- C#传递结构体地址(或者结构体成员的地址)给C/C++ DLL
- 结构体的地址与数据成员的地址
- 从结构体成员获取结构体地址的方法
- 结构体成员地址在结构体内的偏移
- 计算结构体成员地址偏移量...
- 求结构体成员相对地址
- 根据结构体某个成员的地址求出结构体所有成员的值
- C语言结构体里的成员数组和指针
- C语言结构体里的成员数组和指针
- C语言结构体里的成员数组和指针
- C语言结构体里的成员数组和指针
- C语言结构体里的成员数组和指针
- dlmalloc 文件头翻译
- js链接 打开新的页面
- RK平台UVC摄像头shell测试脚本
- 微信小程序经验分享
- Java SE学习笔记:MAP与SET(集合与映射)
- c语言结构体及成员的互换,并且打印结构体地址和成员地址
- 以ping包发送过程分析ipsec执行(草稿)
- 多线程-2、锁
- protected关键字
- IntelliJ IDEA 导入maven项目并将它及依赖打成jar包
- 开启DMVPN 第三阶段 :: Hub--- ip nhrp redirect ; Spoke--- ip nhrp shortcut--Bruce 实验和理论都验证是正确的。
- scrapy-redis 和 scrapy-splash结合 做分布式渲染爬取
- 《Java编程思想》学习笔记
- Android安全之防止被反编译