C语言程序设计<六>

结构(注意 最后的分号!!!)

struct point

{

int x;

int y;

};

关键字struct引入结构声明,struct后面的名字是可选的.称为结构标记(这里是point).如果结构声明的后面不带变量表,则不需要为它分配存储空间,它仅仅描述了一个结构的模板或轮廓.但是,如果结构声明中带有标记,那么在以后的定义结构实例时应该使用该标记定义.如:

struct point pt;//定义了一个struct point 类型的变量pt.

struct point *pt;

pt->x;


结构数据:

struct key

{

char *word;

int count;

}keytab[NKEYS];

它声明了一个结构类型key,并定义了该类型的结构数据keytab,同时为其分配存储空间,数据keytab的每个元素都是一个结构.

NKEYS代表keytab中关键字的个数.

#define NKEYS (sizeof keytab / sizeof(keytab[0]))


自引用结构

二叉树:

 struct tnode

{

char *word;

int count;

struct tnode *left;

struct tnode *right;

};

一个包含其自身实例的结构是非法的.但是下列声明是合法的:

struct tnode *left;

它将left声明为指向tnode 的指针,而不是tnode实例本身.


typedef

typedef int (*PEI)(char *,char*);

该语句定义了类型PEI是"一个指向函数的指针,该函数具有两个char *类型的函数,返回值类型为int"


位字段:

常用方法:

1: #define KEYWORD 01

#define EXTRENAL 02

#define STATIC 04

或:

enum{KEYWORD =01,EXTERNAL = 02,STATIC =04}

这些数字都必须是2的幂.这样,访问这些位就变成了移位运算,屏蔽运算及补码运算进行简单的位操作.

2:   C语言中的位字段(bit-field),或简称字段,是"字"中相邻位的集合,"字"(word)是单个的存储单元

struct

{

unsigned int is_keyword : 1;

unsigned int is_exetern :1;

unsigned int is_static : 1;

}flags;

这里变量flags包含3个一位的字段,冒号后的数据表示字段的宽度(用二进制位数表示).字段被声明为unsigned int 类型,以保证它们是符号量.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值