margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow-wrap: break-word; clear: both; text-indent: 21px; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">在之前的学习中,我们已经大量地使用了字符串,例如在printf函数中输出一个字符串,使用scanf函数读入一个字符串等等。在本节中,我们将介绍一种更为灵活的方法,通过指针引用字符串。
padding: 0px; overflow-wrap: break-word; clear: both; text-indent: 21px; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">
我们先来看这样一个例子,我们要输出一个字符串Hello,world,应该怎样编写程序:
【例7-5】使用字符数组输出字符串
#include<iostream.h>
int main()
{
char a[]="Hello, world";
cout<<a<<endl;
return 0;
}
上例是传统的方法,我们学习了指针之后,还可以使用字符指针变量来引用字符串:
【例7-6】使用字符指针变量来引用字符串
#include<iostream.h>
int main()
{
char *p="Hello, world";
cout<<p<<endl;
return 0;
}
在本例中,我们没有定义字符数组,只定义了一个char*类型的变量,在C++语言中,对于字符串常量是按照字符数组来处理的,在内存中开辟了一个字符数组来存放该字符串常量,但这个字符数组没有名字,因此只能通过指针变量来引用。对字符指针变量p的初始化,实际上是把字符串第一个元素的地址赋值给p,使p指向字符串的第一个字符。
对于字符串中字符的存取,可以用下标方法,也可以用指针方法,我们来看一个例子:
【例7-7】将字符串a复制给字符串b
#include<iostream.h>
int main()
{
char a[]="I love CHINA!",b[20],*p1,*p2;
p1=a;p2=b;
for(;*p1!='\0';p1++,p2++)
*p2=*p1;
*p2='\0';
p1=a;
p2=b;
cout<<"ais:"<<p1<<endl;
cout<<"bis:"<<p2<<endl;
return 0;
}
程序运行结果:
a is: I love CHINA!
b is: I love CHINA!
通过指针引用字符串,实际上和通过指针引用数组类似,借用指针,我们能够更加方便灵活地操作字符串。