指针是保存地址的变量,使用指针可以灵活的处理数组和字符串。例如:
char ch[10]; //定义一个字符数组
char *str; //定义字符指针
str=ch; //指针初始化,ch为数组的首地址
地址表现为一个整数,但是地址和整数之间不能互相转换。如果定义int a; int *p;那么 p=a;p=10;a=p;这样的赋值都是错误的;可以用取地址操作符&,操作数必须是变量,不能是表达式、常数,例如p=&a;指针可以进行算术运算,使用++运算符方便访问数组。
*str++;// 运算符自右向左结合,取str指向的元素,然后str加1
(*str)++; // 取str指向的元素,然后该元素加1
下面通过写一个strcat函数,实现把字符串t添加到s的末尾(s中要有足够的空间),来熟悉指针与数组的操作。
#include<stdio.h>
#define MAXCHAR 1000
void MyStrcat(char*s,char*t);
int main() {
char s[MAXCHAR]="the c prog";
char t[MAXCHAR]="ramming language";
MyStrcat(s,t);
printf("%s",s);
return 0;
}
void MyStrcat(char*s,char*t) {
while(*s)s++; //s移动到结束符s->'\0'
while(*s++=*t++); //t添加到s末尾
}