5.4.1 指向字符数组的指针
与其他类型数组一致,字符数组的数组名也代表字符数组的首地址(且是常量地址)。使用指向字符数组的字符型指针,可实现对字符串的操作。
例5-9 用字符指针输出字符串。
参考程序为
程序运行结果:
CD
标准函数putchar包含在头文件stdio.h中。
程序定义了一个字符型数组str并对其赋初值"CD"。并将数组的首地址赋予字符指针变量ps,即将指针ps指向数组str。
存储情况如图5.4.1所示。
while循环的条件(*ps)等价于(*ps!='\0')。在while循环中指针ps作自增运算ps++,依次输出指针指向的各字符直至遇到字符串结束符'\0'。
图5.4.1 例5-9的数据存储情况
例5-10 合并字符串s1和s2。
参考程序为
输入:
s1=turbo_pascal
s2=&turbo_C
输出:
turbo_pascal&turbo_C
程序第12行的语句:*p++=*q++; 等价于语句:
*p=*q;
q++;
p++;
例5-11 计算字符串的长度。
参考程序为
程序运行结果:
please input a string(less than 20 character):
输入字符串:
programming
输出:
The string length is 11
程序中定义s[20]为字符型数组,定义p为指向字符数组的指针;用键盘输入字符串s。赋值语句
p=s;
将字符数组s的首地址赋予指针p,即使指针p指向字符数组。
while循环的条件为字符串未结束,若表达式(*p!='\0')为真,则进行p加l的操作,使指针p指向下一个字符。
最后用函数printf输出被检测字符串的长度p−s。这里p−s为指针相减,p指向字符串结束符'\0'的地址,s为字符数组的首地址。相减结果为两地址间的字符个数,亦即是被测字符串的长度。
例5-12 输入一个字符串,将这个字符串中所有的小写字母改写为大写字母后输出该字符串。
参考程序为
程序运行结果:Please input a string
输入:
Asd-5jhijMnop..undo-disk
输出:
ASD-5JHIJMNOP..UNDO-DISK
程序用变量string读入一个字符串,并令指针ptr指向string,然后依次检查字符串中的各字符,如果发现其中有为小写字母的,则将它转换为大写字母,最后输出经过转换后的字符串。需要注意的问题是:printf函数中的变量名只能是数组名string而不能是指针ptr,因为string指向这个字符串的首字符,而此时ptr指向字符串的末尾。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。