用指针来描述一个字符数组是十分方便的。前面已经讲过,字符串是以字符数组的形式给出的,并且每个字符数组都以转义字符“\0”作为字符串的结束标志。因此判别一个字符数组是否结束,通常不采用计数的方法,而是以是否读到转义字符“\0”来判断。利用这个特点,可以很方便地用指针来处理字符数组。
例2-44 利用指针将一个字符数组中的字符串复制到另一个字符数组中去。
程序执行结果:
任何一个数组及其数组元素都可以用一个指针及其偏移值来表示,但要注意的是,指针是一个变量,因此像上例中的赋值运算s1=str、s2=0x1000等都是合法的;而数组名是一个常量,不能像变量那样进行运算,即数组的地址是不能改变的。例如上面程序中的语句:
char code str[]={"How are you?"};
是将字符串“How are you?”置到数组str[]中作为初值,而语句:
s1=str;
则是将数组str[]的首地址,即指向数组str的指针赋值给指针变量s1。如果对数组名进行如下的操作:
则都是错误的。