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

#include<stdio.h>//32位系统上,结构体在没指定对齐的时候,默认以四字节进行对齐typedefstruct__ST{intid;//4char*name;//4floatmath;//4}ST;intmain(){STst;//获取结构体的第一个元素的首地址int*ptr_0=(int*)(&st);printf("st:%pptr:%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="helloworld";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=%dst.name=%sst.math=%.2f\n",st.id,st.name,st.math);return0;}
这里的根据对齐原则算出来的偏移量其实其实不就是offsetof宏的原理吗?
#defineoffsetof(TYPE,MEMBER)((size_t)&((TYPE*)0)->MEMBER)
关于“C语言结构体怎么掌握”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C语言结构体怎么掌握”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道。