六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 41|回复: 0

结构与联合相关知识点

[复制链接]

升级  88%

12

主题

12

主题

12

主题

童生

Rank: 1

积分
44
 楼主| 发表于 2013-1-27 05:18:51 | 显示全部楼层 |阅读模式
1. 关于struct
struct T;struct S{char b ;int a ;char c;T* t;      OK! T*的大小在编译时可以确定         //T t;      wrong !T的大小在编译时不能确定,必须在定义S 之前定义T} x ; 
2. offsetof 宏可以确定某个成员在结构或者类中的位置,定义于 stddef.h
offsetof(type,member)
其中,type :类型
         member: 成员名
         表达式的结果 size_t,表示指定成员开始存储的位置距离结构或类开始存储位置偏移几个字节
#include <iostream>struct S{char b ;int a ;char c;} x ;void main(){printf("offsetof(S,c) %d\n",offsetof(S,c));printf("&((S*)0)->c   %d\n",&((S*)0)->c);printf("&S::c         %d\n",&S::c);       } 
以上三个表达式的结果是一样的:
offsetof(S,c) 8&((S*)0)->c   8&S::c         8 
3. 联合变量初始化时,初始值必须是联合的第一个成员的类型
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表