K&R的名著:<C程序设计语言>小程序总结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++);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值