《新》第8章指针.pptVIP

  1. 1、本文档共119页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * int* getInt(char* str) { //指针函数 int value=20; cout str endl; return value; //warning: 将局部变量的地址返回是不妥的 } void somefn(char* str){ int a=40; cout str endl; } void main(){ int* pr=getInt(input a value:); //赋值取自返回的指针值 cout *pr endl; //第一次输出*pr somefn(It is uncertain.); cout *pr endl; //第二次输出*pr } main()中,指针pr得到一个局部变量地址,但接下去执行cout *pr endl; 时,该栈空间地址的内容已经被改变(在VC中不会输出20)。随后,调用另一个函数somefn(),又将该栈空间地址的内容改变了。 进入getInt后,可以看到:value=20 输出*pr:4198553 pr的内容:0x0012ff20 第七节字符指针 字符处理是数据处理中十分常见的情况,使用指针变量来处理字符可以提供很多便利。 字符指针就是指向字符型内存空间的指针变量,一般的定义语句如下: char * p = NULL; 使用字符指针可以访问字符数组和字符串。 两类字符串 一类用于字符数组初始化 char buffer[] = “Hello, world!”; 它在完成将内容填写到所创建的字符数组之后,随即消失。 另一类作为表达式,或输出,或赋值,或参加运算,它在运行中有它自己的存储空间,可以寻址访问。如: cout“good”endl; 访问字符数组 只要将字符指针赋值为字符数组的首地址便可以实现对字符数组的访问。例如: char str[] = “Hello, world!”; char *p = str; 此时,p被初始化为字符数组str的首地址,使用p可以访问数组str的每一个元素。例如,打印str数组中的第i个元素: cout *(p + i); // 推荐做法 或 cout p[i]; // 不推荐做法 访问字符串 可以将字符指针赋值为字符串常量的首地址。例如: char *p =Hello, world!; 此时,p被初始化为字符串的首地址。可以使用类似的方式访问字符串中的各个字符。例如,打印字符常量中的第i个字符: cout *(p + i); 可以使用以下方式输出整个字符串。 cout p; 由于字符串常量是不可改变的,因此不能使用p来改变字符串的内容,如下操作是非法的。 for(i = 0; i sizeof(str); ++i) *(p + i) = ‘\0’; 注意:C/C++语言中的字符串常量存储在常量区,在VC中,程序中所有相同的字符串使用的是相同的字符串,即相同的字符串使用同一个地址中的字符串。 所以在VC中,书上p167末到p168的ch6_16的例子会呈现相反的结果。 ch8_17 void main(){ char buffer[10]=ABC ; char* pc; pc=hello; //ok: 将字符串常量的首地址赋给指针 cout pc endl; //输出hello pc++; cout pc endl; //指针移动了,输出ello cout *pc endl; //指针指向e pc=buffer; //指向ABC cout pc; } 使用字符指针 1. 字符串的比较 strcmp(const char *string1,const char *string2); 2. 字符串的复制(可以用来对字符串进行赋值) strcpy(char *destin, const char *source); 3.字符串连接函数 strcat strcat(char *destin, const char *source); 4.字符串长度函数strlen strlen(const char *string); 第八节 void指针 可以使用关键字void作为函数的形参列表,其表示该函数不需要参数。void还可以用作函数的函数值类型,其表示该函数没有返回值。此外,void还可以用做指针类型,这种指针被成为void指针。 void指针就是空类型指针。其定

文档评论(0)

tianjiao123 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档