使用字符指针处理字符串是C语言中更为常用的方法。它首先通过一定的方式,用字符指针指向字符串,然后通过字符指针来访问字符串存储区域,从而实现对字符串的操作。
使字符型指针指向字符串的方法通常有两种:
"this is a string"是一个字符串,它保存在计算机的一个内存区域。用该字符串对字符指针变量string初始化,就是把字符串首地址赋给指针变量string。
(2)利用赋值语句使指针变量指向字符串。例如:
注意:这里的string指向了字符串"this is a string",实际上是程序将字符串的首地址给了指针变量string,而不是把字符串存入到指针变量的空间中,更不是把字符串赋给*string。
比如下面的表示方法是错误的:
【例9.9】用字符指针和字符数组输出字符串。
程序代码:
运行结果:
程序讲解:
数组mystr 和指针变量pstr在内存中的存储如图9.5所示。由图可以清楚地看出,用字符数组存储字符串时,整个字符串的所有均存储在指定的数组中;而用指针变量存储字符串时,指针变量只是指向字符串的首地址,字符串存储在以指针为首地址的连续区域内。
图9.5 字符串的存储(www.xing528.com)
【例9.10】从键盘上输入一行字符,统计其中字母的个数。
程序代码:
运行结果:
程序讲解:
本例程序中,定义字符数组s 和字符指针pstr,并把数组名s 赋给字符指针pstr,pstr 指向字符数组s,并初始化n=0。从键盘输入一串字符,并判断是否是小写字母还是大写字母,如果成立,n 的值加1。输入完毕后,把n 的值输出。
注意:在初始化时,可以直接将字符串整体赋给字符数组或字符指针,但在一般赋值语句中,只能将字符串整体赋给指向字符串的指针变量,而不能整体赋给一个字符数组。
例如:
【例9.11】利用字符指针变量,实现将a 数组中存放的字符串复制到b 数组中。
程序代码:
运行结果:
程序讲解:
在本例中,p1,p2是指向字符型数组的指针变量。它们与字符数组a、b的不同之处:前者是指针变量,可以移动;而后者是数组名,是数组在内存的首地址,是常量。第一个for循环语句中的"p1++,p2++"表示指针变量p1,p2分别向后移动一个长度单位。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。