指针及字符串

指针及字符串

ID:20548657

大小:25.87 KB

页数:4页

时间:2018-10-12

指针及字符串_第1页
指针及字符串_第2页
指针及字符串_第3页
指针及字符串_第4页
资源描述:

《指针及字符串》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、8.5 指针和字符串在数组一章,我们讲过可以用字符数组存放字符串。与其他类型的数组不同,存放字符串的字符数组在初始化时,系统会自动接一个''到字符串的末尾,例如:main(){charstr[]="ABC";printf("%s",str);}程序运行的结果为:ABC在字符数组str初始化时,系统将字符'A'赋给str[0],'B'赋给str[1],'C'赋给str[2],并自动将字符串结束符''赋给str[3]。调用printf函数输出时,传递的实际参数是数组名称,也就是数组的首地址。printf函数的实现部分将根据该指针依次搜索字符串的字符,直到字符串

2、结束符''为止。我们也可以用指针变量来处理:main(){charstr[]="ABC",*p=str;inti;printf("1:");printf("%s",p);/*代码段1*/printf("2:");puts(p);/*代码段2*/printf("3:");for(i=0;*(p+i)!='';i++)/*代码段3*/printf("%c",*(p+i));printf("4:");for(i=0;*p!='';i++,p++)/*代码段4*/printf("%c",*p);}程序运行的结果为:1:ABC2:ABC3:ABC4:

3、ABC指针变量p在定义时,被初始化指向字符数组str的首地址。在代码段1中,p作为printf的实际参数,同传入数组名称的效果是一样的。代码段2使用了puts函数进行输出。代码段3利用了指针变量p和字符串结束符'',逐个将字符串里的字符输出。代码段4和代码段3类似,不同的是指针变量p的值在循环中变化,每次*p指向不同的数组元素。C语言中,字符常量是按照字符数组来处理的,也就是说,如果程序中有一个字符串常量,系统会自动在内存中创建一个字符数组,将字符串的内容保存在字符数组中,并加字符串结束符''。因此,下面的程序是合法的,输出字符串的内容:main(){ch

4、ar*p="ABC";printf("%s",p);}上面程序中的char*p="ABC";不能理解为“将字符串赋给指针变量p”,应该理解为:(1)定义了一个指向char型变量的指针变量p;(2)系统自动在内存中创建一个4个元素的字符数组,前三个元素存放字符'A','B','C',最后一位存放字符串结束符'';(3)将字符数组的首地址赋给指针变量p。上述的程序也可以改写为:main(){char*p;p="ABC";printf("%s",p);}在函数的执行部分,不能将字符串直接赋值给字符数组。下面是一个错误的例子:main(){charstr[100];s

5、tr="ABC";/*错误的赋值*/printf("%s",str);}这里str是字符数组首地址常量,不能被赋值。提示:进行字符串操作时,一定要保证字符数组是存在的。下面的程序是错误的:main(){charstr[]="hello",*p;strcpy(p,str);printf("%s",p);}p是未经赋值的指针变量,p本身的值是随机值。strcpy将把字符串拷贝到p开始的内存中。这种操作很危险,可能导致异常。正确的方法是:p应该指向一个实实在在的字符数组。从上述的例子可以看出,指向字符串的指针实际上是指向字符数组的指针,它属于指向一维数组的指针的一个特例

6、。在处理指向字符数组的指针时,只要注意处理字符串结束符''就可以了。例8-3编写程序实现strcat的功能,即将两个字符串连接起来。首先可以定义两个字符数组,接受用户输入的字符串;同时定义两个指针p1和p2,分别指向两个字符数组的首地址。可以利用循环依次向前拨动p1,直到*p1是字符串结束符为止。这样p1就指向了字符串1的末尾。然后再使用一个循环,依次将*p2复制到*p1,直到*p2是字符串结束符为止。这样就把字符串2连接到字符串1后。最后要保证连接后的字符串1一定要有字符串结束符。main(){chars1[100],s2[100],*p1,*p2;p1=s

7、1;p2=s2;/*输入字符串s1和s2*/printf("Inputfirststring:");gets(s1);printf("Inputsecondstring:");gets(s2);/*将p1拨到s1的末尾*/while(*p1)p1++;/*将s2的内容接到s1后面*/while(*p1++=*p2++);/*输出连接后的内容*/printf("Catenatedstring:%s",s1);}程序运行的结果为:Inputfirststring:brainInputsecondstring:stormCatenatedstring:brainst

8、orm程序

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。