[TOC]

类型、运算符与表达式

  1. char字符型占用一个字节。int整型,反应整数的最自然长度。

  2. 常量定义

    #define MAXLINE 1000
    
  3. 字符常量’\0’表示值为0的字符,也就是空字符null。字符串内部使用’\0’作为字符串的结尾,因此,存储字符串的物理存储单元数比括在双引号中的字符数多一个。

  4. 单引号双引号的区别,’x’是一个整数,其值是字母x在机器字符集中对应的数值;”x”是一个包含一个字符以及一个结束符’\0’的字符数组。

数组和指针

  1. p=&c &用于取一个对象的地址,只能应用内存中的对象。p为指向c的指针。

  2. int *p;

    p=&x; p现在指向x

  3. y=*p;y的值为指针p指向的对象的值。*为间接寻址或者间接引用运算符。

  4. int getint(int *p);参数是一个指针

    int getint(&a);使用时用&a取地址

  5. 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[])

  6. 字符串常量是一个字符数组(char a[]),字符数组以”结尾,占有的存储单元数比双引号内的大1

  7. char *p;

    p=”a man”;把该字符的指针赋值给p

  8. char a[10];定义一个字符串,长度为10

    char a[];

结构

  1. struct point  { //分别是引入结构申明,结构标记  
        int x; //成员  
        int y;  
    };
    
  2. struct {…} x,y,z;这个就类似于int x,y,z;这儿前面的部分相当于申明类型是结构,这儿也可以没有结构标记

  3. struct point pt;前面两个代表类型,后面的pt是变量,和上面相比,代替{…}的部分

  4. struct point pt={100,200};

  5. pt.x;用来应用其中的成员x

  6. struct point pt(int x, int y)  
    {  
        struct point temp;  
          
        return temp; 
    }
    

    函数返回struct point类型数据

  7. struct point *pp; pp为指向struct point类型的指针

  8. (*pp).y 这样来取成员是因为.的优先级大于*

  9. 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},  
     ……  
 };
 ```

 赋值
  1. struct tuode {  
        char *word;  
        int count;  
        struct tuode *left;  
        struct tuode *right;  
    };
    

    自引用结构,一般二叉树用类似结构

  2. typedef int length;使length与int同义。

    typedef声明不创建某个类型,只增加新名称

  3. typedef struct tuode *treeptr;treeptr被定义为一个指向该指针结构的指针

  4. typedef struct tuode {  
    ……  
    } 
    

    treenode;则treenode同价struct tuode,有treenode a;则是申明一个该结构的a

  5. union u_tag {  
        int uval;  
        float fval;  
    } u;
    

    联合