定义:字符串在内存中的起始地址称为字符串的指针,可以定义一个字符型指针变量来指向一个字符串。
使用指针处理字符串
我们之前是怎么数出一个字符串的捏,看下面代码。
1 |
|
是不是这样子用一个字符数组来输出字符串?但是在学完指针后,我们将学习使用字符型数组来输出一个字符串。
直接上代码:
1 | #include <stdio.h> |
注意:用字符指针后是将字符串常量的首地址赋给指针变量,千万不要理解为将字符串常量赋值给指针变量。这个很impotant。
字符型数组与字符型指针变量两者的概念不一样,字符型数组可以存放字符串的每个具体的字符值,而字符型指针变量是存放字符串的首地址(也可以存放字符串中某个字符的地址)
对于字符型数组与字符型指针变量,都可以使用%s格式控制符进行整体输入输出。
例题:分析下面程序中使用字符型指针变量的情况。
程序代码如下:
1 |
|
| 程序运行结果如下: |
|---|
| n=6 |
【分析】循环前,字符型指针变量pc指向数组str中存放的字符串的每一个字符,即存放字符’W’的地址,循环的条件是“*pc!=’\0’“,循环依次处理数组str中存放的每一个字符,并统计该字符串中空格的个数。
字符型指针变量作函数参数
| 从一个函数将一个字符串传递到另一个函数,可以用字符型数组名或字符型指针变量作为参数。共有以下4种情况: |
|---|
| 1. 字符型数组名做实参和形参。 |
| 2.字符型指针变量作实参,字符型数组名作形参。 |
| 3.字符型指针变量作实参和形参。 |
| 4.字符型数组名作实参和字符型指针变量作形参。 |
接下来我将开始通过程序示例详细展示这几种情况。
例题:以字符型数组名做实参和形参,在被调用函数中统计字符个数。
【分析】可以定义函数tongji完成字符统计,在主函数中使用语句”sum=tongji(a);“调用函数tongji,用字符型数组名a作实参。被调函数的形参是字符型数组名str。在被调函数中完成字符统计之后,用return语句返回统计值。
程序代码如下:
1 |
|
这个程序中有意思的是无论你a这个数组后面改成多少位它最终输出的结果都是一样的,都是23.因为在系统读完你写的字符串后在后面都是会填补‘\0’进行补充。