K&R的名著:小程序总结7指针

1、有效的指针运算包括:相同类型指针之间的赋值运算;指针同整数之间的加法或减法运算;指向相同数组中元素的两个指针间的减法或比较运算;将指针赋值为0或指针与0之间的比较运算。

例1

#define ALLOCSIZE 10000

static char allocbuf[ALLOCSIZE];

static char *allocp = allocbuf;

 

char *alloc(int n)

{

    if (allocbuf +ALLOCSIZE -allocp >= n) {

    allocp += n;

    return allocp -n;

    }

    else

    return 0;

}

 

void afree(char *p)

{

    if (p >=allocbuf && p < allocbuf + ALLOCSIZE)

    allocp = p;

}

 

void swap(char *v[], int i, intj)

{

  char *temp;

  temp = v[i];

  v[i] = v[j];

  v[j] = temp;

}

2、字符数组

字符数组以空字符'\0'结尾,所以,程序可以通过检查空字符找到字符数组的结尾。

以数组的形式表示:
void strcpy(char *s, char *t)

{

    int i;

    i = 0;

   while ((s[i] =t[i]) != '\0')

       i++;

}
以指针的形式表示:

void strcpy(char *s, char *t)

{

   while ((*s++ =*t++) != '\0')
   ;
 }
3、指针数组与指针的指针

char *ptr[MAXLINES]; //ptr是个具有MAXLINES个元素的一维数组,其中的每个元素都是指向字符类型的指针。

char **ptr;  //指针的指针,指针所指向的元素师指针,该指针所指向的元素师char数据

当指针数组输出时,可以用printf("%s\n",*ptr++);


你可能感兴趣的:(K&R的名著:小程序总结7指针)