指针和字符数组.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. 字符串的表示与引用 在C语言中,既可以用字符数组表示字符串,也可用字符指针变量来表示;引用时,既可以逐个字符引用,也可以整体引用。 (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:用串常量“I love Beijing.”的地址(由系统自动开辟、存储串常量的内存块的首地址)给string赋初值。 (2)整体引用 【例6.7】采取整体引用的办法,改写[例5.9]。 /*程序名为l6_7.cpp */ /*程序功能:使用字符指针变量表示和引用字符串*/ main() { char *string=”I love Beijing.”; printf(“%s\n”,string); } 程序说明:printf(“%s\n”,string);语句 通过指向字符串的指针变量string,整体引用它所指向的字符串的原理:系统首先输出string指向的第一个字符,然后使string自动加1,使之指向下一个字符;重复上述过程,直至遇到字符串结束标志。 注意:其它类型的数组,是不能用数组名来一次性输出它的全部元素的,只能逐个元素输出。 2.字符指针变量与字符数组之比较 虽然用字符指针变量和字符数组都能实现字符串的存储和处理,但二者是有区别的,不能混为一谈。 (1)存储内容不同。 字符指针变量中存储的是字符串的首地址,而字符数组中存储的是字符串本身(数组的每个元素存放一个字符)。 (2)赋值方式不同。 对字符指针变量,可采用下面的赋值语句赋值: char *pointer; pointer=This is a example.; 而字符数组,虽然可以在定义时初始化,但不能用赋值语句整体赋值。下面的用法是非法的: char char_array[20]; 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)=*(str_from+i))!=’\0’; i++) ; /*循环体为空语句*/ } main() { char array_str1[20]=”I am a teacher.”; char array_str2[20]; string_copy(array_str1, array_str2) ; /*数组名作实参*/ printf(“array_str2=%s\n”, array_str2); } 程序运行结果: I am a teacher. 程序说明: for(; (*(str_to+i)=*(str_from+i))!=’\0’; i++) ; 语句的执行过程为:首先将源串中的当前字符,复制到目标串中;然后判断该字符(即赋值表达式的值)是否是结束标志。如果不是,则相对位置变量i的值增1,以便复制下一个字符;如果是结束标志

文档评论(0)

sy78219 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档