首页 百科知识 指针怎样指向字符串数组

指针怎样指向字符串数组

时间:2024-10-16 百科知识 版权反馈
【摘要】:与其他类型数组一致,字符数组的数组名也代表字符数组的首地址。使用指向字符数组的字符型指针,可实现对字符串的操作。程序定义了一个字符型数组str并对其赋初值"CD"。在while循环中指针ps作自增运算ps++,依次输出指针指向的各字符直至遇到字符串结束符'\0'。while循环的条件为字符串未结束,若表达式(*p!相减结果为两地址间的字符个数,亦即是被测字符串的长度。

5.4.1 指向字符数组的指针

与其他类型数组一致,字符数组的数组名也代表字符数组的首地址(且是常量地址)。使用指向字符数组的字符型指针,可实现对字符串的操作。

例5-9 用字符指针输出字符串。

参考程序为

img336

程序运行结果:

  CD

标准函数putchar包含在头文件stdio.h中。

程序定义了一个字符型数组str并对其赋初值"CD"。并将数组的首地址赋予字符指针变量ps,即将指针ps指向数组str。

存储情况如图5.4.1所示。

while循环的条件(*ps)等价于(*ps!='\0')。在while循环中指针ps作自增运算ps++,依次输出指针指向的各字符直至遇到字符串结束符'\0'。

img337

图5.4.1 例5-9的数据存储情况

例5-10 合并字符串s1和s2。

参考程序为

img338

输入:

  s1=turbo_pascal

  s2=&turbo_C

输出:

  turbo_pascal&turbo_C

程序第12行的语句:*p++=*q++; 等价于语句:

  *p=*q;

  q++;

  p++;

例5-11 计算字符串的长度。

参考程序为

img339

程序运行结果:

  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 输入一个字符串,将这个字符串中所有的小写字母改写为大写字母后输出该字符串。

参考程序为

img340

程序运行结果:Please input a string

输入:

  Asd-5jhijMnop..undo-disk

输出:

  ASD-5JHIJMNOP..UNDO-DISK

程序用变量string读入一个字符串,并令指针ptr指向string,然后依次检查字符串中的各字符,如果发现其中有为小写字母的,则将它转换为大写字母,最后输出经过转换后的字符串。需要注意的问题是:printf函数中的变量名只能是数组名string而不能是指针ptr,因为string指向这个字符串的首字符,而此时ptr指向字符串的末尾。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈