首页 理论教育 C语言程序设计:指向字符串的指针

C语言程序设计:指向字符串的指针

时间:2023-10-29 理论教育 版权反馈
【摘要】:用字符指针指向字符串的字符。使用指针输出字符串。=′\0′;p++)6printf;7}程序结果如图7.23所示:图7.23例7.17程序2结果图输出时,系统先输出p所指向的第一个字符,然后系统自动执行p++,使p指向下一个字符再输出,p再自增,直到遇到′\0′为止。

C语言程序设计:指向字符串的指针

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

(1)用字符数组存放一个字符串,然后用字符数组名和下标可以访问字符数组中的元素,也可以通过字符数组名用“%s”格式符输出一个字符串。

(2)用字符指针指向一个字符串,可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串的字符。

保存程序中的字符串常量,系统会自动在内存中创建一个字符数组,将字符串的内容复制到数组中,并加字符串结束符“\0”。

例如:

 char string[]="C Languqge";

因为,一个char型指针可以含有一个char型变量地址,所以可以利用指针对字符串初始化。例如:

char*p=“C Language”;

其中p是一个指向char型的指针变量,并将它初始化为字符串“C Language”的第一个字符的地址,即p指向字符串的首地址。

这里虽然没有定义字符数组,但为字符数组在内存中分配连接的存储空间(仍以数组形式存放且以′\0′结束),并将其第一个单位的地址存储到变量p中。该语句等价于:

char*p;

p="C Language";    //使用赋值语句,只赋值字符串首地址

无论哪种形式,都是为变量p赋值(地址值),而不是对*p赋值。赋值过程只是将字符串的首地址存储在变量p中。p是一个指针变量,它不能用来存放字符串,而只能用来存放一个char型变量的地址。

【例7.17】使用指针输出字符串。

程序1内容如下:

1 #include<stdio.h>

2 void main()

3 {

4  char*p;

5  p="C Language";(www.xing528.com)

6  printf("%s\n",p);

7 }

程序结果如图7.22所示:

图7.22 例7.17程序1结果图

程序2内容如下:

1 #include<stdio.h>

2 void main()

3 {

4  char*p="C Language";

5  for(;*p!=′\0′;p++)

6   printf("%c\n",*p);

7 }

程序结果如图7.23所示:

图7.23 例7.17程序2结果图

【例题中关键问题说明】

输出时,系统先输出p所指向的第一个字符,然后系统自动执行p++,使p指向下一个字符再输出,p再自增,直到遇到′\0′为止。相当于用循环逐个输出字符。

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

我要反馈