《TCPL》笔记:结构

1.struct声明

声明struct时可以在右花括号跟一个变量表,

struct {...} x,y,z;

如果结构声明不带变量表,则不需要给他分配空间

2.结构数组的定义

struct key
{
	char *word;
	int count;
}keytab[]=  {
    "auto",0,
    "break",0,
    "case",0
}

3.运算符优先级

struct point
{
	int x;
	int y;
	char *str;
}`
struct point *pp;

等价表达:
(*pp).x ~ pp ->x
*pp.x ~ *(pp.x)
++pp->x ~ ++(pp->x)
*p->str 读取的是指针str所指对象的值
*p->str++ 先读取str所指对象的值,再将str加1(与 *str++相同)
(*p->str)++ 给str所指对象的值加1
*p++ ->str 先读取指针str指向对象的值,再给p加1

原因:
运算符优先级
.-> 结合方向:从左到右
②++ * 结合方向: ++为前缀时,从右到左;++为后缀时,从左向右

4.typedef

typedef int Length;

将Length定义为与int具有同等意义的类型名字。
类型Length可用于类型声明、类型转换等,它的用法和类型int完全相同。但typedef并没有创造一个新的类型,只是给某个一个已存在的类型增加一个新的名称而已。

Length len,maxlen;
Length *lengths[];

typedef类似#define,但由于typedef是由编译器解释的,因此他的文本替换功能要超过预处理器的能力,例如:

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

该语句定义了类型PFI是“一个指向函数的指针,并且该函数具有两个char *类型的参数,返回值类型为int”。

除了表达方式更简洁外,typedef还可以使程序参数化,以提高程序的可以移植性。如果typedef定义的数据类型和机器有关,那么,当程序移植到其他程序时。只需改变typedef类型定义就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值