千家信息网

C语言结构体怎么掌握

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍了C语言结构体怎么掌握的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言结构体怎么掌握文章都会有所收获,下面我们一起来看看吧。例子:#include /
千家信息网最后更新 2025年01月16日C语言结构体怎么掌握

这篇文章主要介绍了C语言结构体怎么掌握的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言结构体怎么掌握文章都会有所收获,下面我们一起来看看吧。

例子:

#include //32位系统上,结构体在没指定对齐的时候,默认以四字节进行对齐 typedef struct __ST{ int id ;  //4 char *name ; //4 float math ; //4}ST;int main(){ ST st ; //获取结构体的第一个元素的首地址  int *ptr_0 = (int *)(&st); printf("st:  %p  ptr:  %p \n",&st,ptr_0); //对结构体第一个元素赋值  *ptr_0 = 100 ; printf("*ptr_0 = %d\n",*ptr_0); //获取结构体的第二个元素的首地址,因为第二个元素是一级指针,所以需要用一个二级指针来接  char **ptr_1 = (char **)((int)&st+4) ; printf("ptr_1:%p\n",ptr_1); //对结构体的第二个元素赋值  *ptr_1 = "hello world"; printf("ptr_1:%s\n",*ptr_1); //获取结构体的第三个元素的首地址,根据对齐原则偏移算出第三个元素的地址  float *ptr_2 = (float *)((int)&st+8) ; printf("ptr_2:%p \n",ptr_2); //对结构体的第三个元素进行赋值  *ptr_2 = 96.78 ; printf("ptr_2:%.2f \n",*ptr_2); //输出结构体中所有成员的值  printf("st.id = %d  st.name = %s  st.math = %.2f\n",st.id,st.name,st.math);  return 0;}

这里的根据对齐原则算出来的偏移量其实其实不就是offsetof宏的原理吗?

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

关于"C语言结构体怎么掌握"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"C语言结构体怎么掌握"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0