《C语言大学实用教程》指针.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例7.5 :字符串拷贝——用字符数组编程 void MyStrcpy(char dstStr[], char srcStr[]) { int i = 0; while (srcStr[i] != '\0') { dstStr[i] = srcStr[i]; i++; } dstStr[i] = '\0'; } 下标: 0 1 2 3 4 5 6 7 8 9 10 11 H e l l o C h i n a \0 H e l l o C h i n a \0 srcStr[i] dstStr[i] 下标移动方向 dstStr[i]='\0' srcStr dstStr 结束 拷贝 i i++ i void MyStrcpy(char *dstStr, const char *srcStr) { while (*srcStr != '\0') { *dstStr = *srcStr; srcStr++; dstStr++; } *dstStr = '\0'; } 当只允许函数访问地址内容,不允许修改时,可以把函数的指针参数定义为const H e l l o C h i n a \0 H e l l o C h i n a \0 *srcStr *dstStr 指针移动方向 指针移动方向 *to='\0' dstStr srcStr++ srcStr srcStr dstStr++ dstStr 例7.5 :字符串拷贝——用字符指针编程 例7.6 :计算实际字符个数 unsigned int MyStrlen(char str[]) { int i; unsigned int len = 0; for (i=0; str[i]!='\0'; i++) { len++; } return (len); } unsigned int MyStrlen(char *pStr) { unsigned int len = 0; for (; *pStr!='\0'; pStr++) { len++; } return (len); } 方法2:用字符指针实现 方法1:用字符数组实现 7.3 指针与数组 C指针与数组关系密切,以指针为媒介可以完成各种数组操作。常能使程序更加简洁有效。 用指针做数组操作同样要特别注意越界错误。 指针和数组的关系是C语言特有的,除了由C派生出的语言(如C++),一般语言中没有这种关系。 指向数组元素的指针 类型合适的指针可以指向数组元素。假定有定义: int *p1, *p2, *p3, *p4; int a[10] = {1,2,3,4,5,6,7,8,9,10}; 可以写: p1 = &a[0]; p2 = p1; p3 = &a[5]; p4 = &a[10]; p4没指向a的元素,是指向a最后元素向后一个位置。 C语言保证这个地址存在,但写 *p4 是错误的。 写数组名得到数组首元素地址,元素类型的指针值。 “p1 = &a[0];”可简写为: p1 = a; 指针运算 当指针p指向数组元素时说p指到了数组里。这时由p可以访问被p指的元素,还可访问数组的其他元素。 例:p1指向a首元素,值合法(a[0]的地址),p1+1也合法(a[1]的地址)。p1+2、p1+3、…也合法,分别为a其他元素的地址。由它们可间接访问a各元素。 例: *(p1 + 2) = 3;/* 给a[2]赋值 */ p2 = p1 + 5; /* 使p2指向a[5] */ 也可由指向非首元素的指针出发访问数组其他元素: *(p2 + 2) = 5; /* 给a[7]赋值 */ 可用减法访问所指位置之前的元素: *(p2 - 2) = 4; /* 给a[3]赋值 */ 通过指针访问数组元素时必须保证不越界。 运算取得的指针值(即使不间接访问)必须在数组范围内(可过末元素一位置),否则无定义。 这类运算称为“指针运算”。其他常用指针运算: 用指针运算得到的值做指针更新: p2 = p2 - 2; /* 这使p2改指向a[3] */ 用增/减量操作做指针更新(指针应指在数组里): p3 = p2; ++p3; --p2; p3 +

文档评论(0)

锦绣中华 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档