当前位置:网站首页 > 技术博客 > 正文

offsetwith



 1 #include <stdio.h>  2 #include <stdlib.h>  3  4 #define NAME_STR_LEN 32  5  6 #define offsetof(type, member) (size_t)&(((type*)0)->member)  7  8 #define container_of(ptr, type, member) ({  9 const typeof( ((type *)0)->member ) *__mptr = (ptr); 10 (type *)( (char *)__mptr - offsetof(type,member) );}) 11 12 typedef struct student_info 13 { 14 int id; 15 char name[NAME_STR_LEN]; 16 int age; 17 }student_info; 18 19 20 int main() 21 { 22 size_t off_set = 0; 23 off_set = offsetof(student_info, id); 24 printf("id offset: 蝈span>",off_set); 25 off_set = offsetof(student_info, name); 26 printf("name offset: 蝈span>",off_set); 27 off_set = offsetof(student_info, age); 28 printf("age offset: 蝈span>",off_set); 29 student_info *stu = (student_info *)malloc(sizeof(student_info)); 30 stu->age = 10; 31 student_info *ptr = container_of(&(stu->age), student_info, age); 32 printf("age:%d ", ptr->age); 33 printf("stu address:%p ", stu); 34 printf("ptr address:%p ", ptr); 35 return 0; 36 }

  • 上一篇: 线程之间的同步机制
  • 下一篇: flvurl
  • 版权声明


    相关文章:

  • 线程之间的同步机制2025-07-15 20:30:05
  • c python区别2025-07-15 20:30:05
  • 网络爬虫软件有哪些2025-07-15 20:30:05
  • nlp销售课程的心得与感悟2025-07-15 20:30:05
  • 什么是全局代理模式2025-07-15 20:30:05
  • flvurl2025-07-15 20:30:05
  • 语音识别程序c语言2025-07-15 20:30:05
  • 汇编移位操作符2025-07-15 20:30:05
  • 线程之间的通信简单2025-07-15 20:30:05
  • 安装pynput2025-07-15 20:30:05