收藏 分享(赏)

指针与字符数组.doc

上传人:myw993772 文档编号:6865656 上传时间:2019-04-25 格式:DOC 页数:3 大小:32KB
下载 相关 举报
指针与字符数组.doc_第1页
第1页 / 共3页
指针与字符数组.doc_第2页
第2页 / 共3页
指针与字符数组.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1. 字符串的表示与引用在语言中,既可以用字符数组表示字符串,也可用字符指针变量来表示;引用时,既可以逐个字符引用,也可以整体引用。(1)逐个引用【例 6.6】 使用字符指针变量表示和引用字符串。/*程序名为 l6_6.cpp /main() char *string=”I love Beijing.”; for(; *string!=0; string+) printf(“%c”, *string);printf(“n”);程序运行结果:I love Beijing.程序说明:char *string=“I love Beijing.“;语句定义并初始化字符指针变量 string:用串常量“

2、I love Beijing.”的地址(由系统自动开辟、存储串常量的内存块的首地址)给 string 赋初值。(2)整体引用【例 6.7】采取整体引用的办法,改写例 5.9。/*程序名为 l6_7.cpp */*程序功能:使用字符指针变量表示和引用字符串 */main() char *string=”I love Beijing.”; printf(“%sn”,string);程序说明:printf(“%sn”,string);语句通过指向字符串的指针变量 string,整体引用它所指向的字符串的原理:系统首先输出 string 指向的第一个字符,然后使 string 自动加,使之指向下一个字

3、符;重复上述过程,直至遇到字符串结束标志。注意:其它类型的数组,是不能用数组名来一次性输出它的全部元素的,只能逐个元素输出。2.字符指针变量与字符数组之比较虽然用字符指针变量和字符数组都能实现字符串的存储和处理,但二者是有区别的,不能混为一谈。(1)存储内容不同。字符指针变量中存储的是字符串的首地址,而字符数组中存储的是字符串本身(数组的每个元素存放一个字符) 。(2)赋值方式不同。对字符指针变量,可采用下面的赋值语句赋值:char *pointer;pointer=“This is a example.“;而字符数组,虽然可以在定义时初始化,但不能用赋值语句整体赋值。下面的用法是非法的:ch

4、ar char_array20;char_array=“This is a example.“; /*非法用法*/(3)指针变量的值是可以改变的,字符指针变量也不例外;3. 字符串指针作函数参数【例 6.8】 用函数调用方式,实现字符串的复制。/*程序名为 l6_8.cpp */*/*string_copy()函数:复制一个字符串*/ /*形参:字符指针 str_from 接收源串,字符指针 str_to 存储目标串 */*返回值:无*/ /*/void string_copy(char *str_from, char *str_to) int i=0;for(; (*(str_to+i)=*

5、(str_from+i)!=0; i+) ; /*循环体为空语句*/main() char array_str120=”I am a teacher.”;char array_str220;string_copy(array_str1, array_str2) ; /*数组名作实参*/printf(“array_str2=%sn”, array_str2);程序运行结果:I am a teacher.程序说明:for(; (*(str_to+i)=*(str_from+i)!=0; i+) ; 语句的执行过程为:首先将源串中的当前字符,复制到目标串中;然后判断该字符(即赋值表达式的值)是否是结

6、束标志。如果不是,则相对位置变量 i 的值增 1,以便复制下一个字符;如果是结束标志,则结束循环。其特点是:先复制、后判断,循环结束前,结束标志已经复制。例:将 char a=“123456“倒序 a=“654321“#include #include void fun (char *w,int m)/m=strlen(a)=6,*w= a=“123456“ char s,*p1,*p2;p1=w;p2=w+m-1;/系统会自动给 w 赋初值的。这里就假设 p1 指向地址是 0,那么 P2 就是 5while(p1p2)/而地址 0 指向值是 1,地址 5 指向的是 6 s=*p1; /也就是 *p1 指向的值是 1,*p2 向的值是 6*p1=*p2;*p2=s;/到这 *p1 指向的值是 6,*p2 指向的值是 1,也就是 a 的第一个地址上的值为 6,最后一个为 1p1+;p2-;/p1=2;p2=5 开始新一轮循环main() char a=“123456“;fun(a,strlen(a);puts(a);/strlen(a)=6;strlen 是计算字符串长度的,直到“0“为止 /调用 fun 并将结果放入 a 数组

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报