首页 百科知识 字符串指针指向字符串变量

字符串指针指向字符串变量

时间:2022-10-20 百科知识 版权反馈
【摘要】:字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。本例是将指针变量指向一个格式字符串,用在printf函数中,用于输出二维数组的各种地址表示的值。这也是程序中常用的方法。要求把一个字符串的内容复制到另一个字符串中,并且不能使用strcpy函数。由于采用的指针变量pa和pss,pb和pds均指向同一字符串,因此在主函数和cprstr函数中均可使用这些字符串。这样使程序更加简洁。

9.4.1 字符串的表示形式

在C语言中,可以用两种方法访问一个字符串。

1.用字符数组存放一个字符串,然后输出该字符串,如图9-14所示。

img461

图9-14

【例9-22】

img462

说明:和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址

2.用字符串指针指向一个字符串。

【例9-23】

img463

字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。只能按对指针变量的赋值不同来区别。对指向字符变量的指针变量应赋予该字符变量的地址。

例如:

img464

表示p是一个指向字符变量c的指针变量。

而:

img465

则表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。

上例中,首先定义string是一个字符指针变量,然后把字符串的首地址赋予string(应写出整个字符串,以便编译系统把该串装入连续的一块内存单元),并把首地址送入string。程序中的:

img466

等效于:

img467

【例9-24】输出字符串中n个字符后的所有字符。

img468

程序运行结果:

book

在程序中对ps初始化时,即把字符串首地址赋予ps,当ps=ps+10之后,ps指向字符"b",因此输出为"book"。

【例9-25】在输入的字符串中查找有无'k'字符。

img469

【例9-26】本例是将指针变量指向一个格式字符串,用在printf函数中,用于输出二维数组的各种地址表示的值。但在printf语句中用指针变量PF代替了格式串。这也是程序中常用的方法。

img470

【例9-27】本例是把字符串指针作为函数参数的使用。要求把一个字符串的内容复制到另一个字符串中,并且不能使用strcpy函数。函数cprstr的形参为两个字符指针变量。pss指向源字符串,pds指向目标字符串。注意表达式:(*pds=*pss)!='\0'的用法。

img471

在本例中,程序完成了两项工作:一是把pss指向的源字符串复制到pds所指向的目标字符串中,二是判断所复制的字符是否为'\0',若是则表明源字符串结束,不再循环。否则,pds和pss都加1,指向下一字符。在主函数中,以指针变量pa,pb为实参,分别取得确定值后调用cprstr函数。由于采用的指针变量pa和pss,pb和pds均指向同一字符串,因此在主函数和cprstr函数中均可使用这些字符串。也可以把cprstr函数简化为以下形式:

img472

即把指针的移动和赋值合并在一个语句中。进一步分析还可发现'\0'的ASCⅡ码为0,对于while语句只看表达式的值为非0就循环,为0则结束循环,因此也可省去“!='\0'”这一判断部分,而写为以下形式:

img473

表达式的意义可解释为,源字符向目标字符赋值,移动指针,若所赋值为非0则循环,否则结束循环。这样使程序更加简洁。

【例9-28】简化后的程序如下所示。

img474

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

我要反馈