[TOC]
类型、运算符与表达式
-
char字符型占用一个字节。int整型,反应整数的最自然长度。
-
常量定义
#define MAXLINE 1000
-
字符常量’\0’表示值为0的字符,也就是空字符null。字符串内部使用’\0’作为字符串的结尾,因此,存储字符串的物理存储单元数比括在双引号中的字符数多一个。
-
单引号双引号的区别,’x’是一个整数,其值是字母x在机器字符集中对应的数值;”x”是一个包含一个字符以及一个结束符’\0’的字符数组。
数组和指针
-
p=&c
&用于取一个对象的地址,只能应用内存中的对象。p为指向c的指针。 -
int *p;
p=&x;
p现在指向x -
y=*p;
y的值为指针p指向的对象的值。*为间接寻址或者间接引用运算符。 -
int getint(int *p);
参数是一个指针int getint(&a);
使用时用&a取地址 -
int a[10];
定义了一个长度为10的数组,存在相邻内存的地方int *pa;
pa=&a[0];
pa指向a[0]的地址*(pa+i)≡a[i];
pa+i指向a[i]的地址pa≡a;
数组名代表数组第一个元素的地址a[i]≡*(a+i);
&a[i]≡a+i;
把数组名传给一个函数时,实际传递的是数组第一个元素的地址。
int strlen(char *s)
等价于int strlen(char s[])
-
字符串常量是一个字符数组
(char a[])
,字符数组以”结尾,占有的存储单元数比双引号内的大1 -
char *p;
p=”a man”;
把该字符的指针赋值给p -
char a[10];
定义一个字符串,长度为10char a[];
结构
-
struct point { //分别是引入结构申明,结构标记 int x; //成员 int y; };
-
struct {…} x,y,z;
这个就类似于int x,y,z;这儿前面的部分相当于申明类型是结构,这儿也可以没有结构标记 -
struct point pt;
前面两个代表类型,后面的pt是变量,和上面相比,代替{…}的部分 -
struct point pt={100,200};
-
pt.x;
用来应用其中的成员x -
struct point pt(int x, int y) { struct point temp; … return temp; }
函数返回struct point类型数据
-
struct point *pp;
pp为指向struct point类型的指针 -
(*pp).y
这样来取成员是因为.的优先级大于* -
pp->x;
相当于(*pp).y
这样也是去成员的一个办法,这两种分别是结构和结构指针取成员的方法。
```c
struct key {
char *word;
int count;
} keytab[NKEYS]
```
结构数组,数组的每一个值都是一个完整的struct key类型
```c
struct key {
char *word;
int count;
} keytab[]={
{“auto”, 0},
{“break”, 0},
……
};
```
赋值
-
struct tuode { char *word; int count; struct tuode *left; struct tuode *right; };
自引用结构,一般二叉树用类似结构
-
typedef int length;
使length与int同义。typedef声明不创建某个类型,只增加新名称
-
typedef struct tuode *treeptr;
treeptr被定义为一个指向该指针结构的指针 -
typedef struct tuode { …… }
treenode;则treenode同价struct tuode,有treenode a;则是申明一个该结构的a
-
union u_tag { int uval; float fval; } u;
联合