K&R学习笔记 第六章

第六章讲的是结构,它提供了一种方法,让程序员通过组合已有的基本类型,构建自己的复杂类型的方法。
结构支持的操作不多,只有复制和赋值、取地址、访问其成员3种。对于复制和赋值,可以采用对于结构体的成员单个赋值的方法,也可以整体赋值,当结构体很大,复制产生的代价比较高昂时,也可以采用传递指针的方法。
对于结构体的一些操作,我们要时刻牢记的是“.”,“->”,“()”,“[]”的优先级是最高的。所以*p->str是对p结构的str成员解引,*p->str++是对str解引以后,在对str自增。++p->len是对len自增。

对于数据结构,有一个经典的例子,就是二叉树:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

#define MAXWORD	100
#define BUFSIZE 100	//缓冲区大小
char buf[BUFSIZE]; //缓冲区
int bufp = 0;		//缓冲区索引

//二叉树
struct tnode
{
	char *word;
	int count;
	struct tnode *left;
	struct tnode *right;
};
//注意,一个包含自身结构的实例是非法的,但是left和right都是指向tnode类型的指针,而不是实例

struct tnode *addTree(struct tnode* ,char *);
void treeprint(struct tnode *);
int getword(char* ,int);
struct tnode *tallo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值