- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指针使用方法
? 1.4指针的运算
??? 1.4.1赋值运算
??? 指针变量的赋值运算有以下几种形式:
??? 1.4.1.1指针变量初始化赋值如下:
??? int a;
??? int *ip=a;
??? 1.4.1.2把一个变量的地址赋予指向相同数据类型的指针变量。例如:
?int a;
int *ip;
ip=a;???????????? //把整型变量a的地址赋予整型指针变量ip
? ??? 1.4.1.3把一个指针变量的值赋予指向相同类型变量的另一个指针变量。例如:
?int a;
int *pa=a;
int *pb;
pb=pa;????????????? //把a的地址赋予指针变量pb ??? 由于pa,pb均为指向整型变量的指针变量,因此可以相互赋值。
??? 1.4.1.4把数组的首地址赋予指向数组的指针变量。例如:
?int a[5],*pa;
pa=a;?????????????? //数组名表示数组的首地址,故可赋予指向数组的指针变量pa
也可写为:
pa=a[0];?????????? //数组第一个元素的地址也是整个数组的首地址也可赋予pa
当然也可采取初始化赋值的方法:
int a[5],*pa=a; ??? 以上是一些基本的数组赋值方法,后面我们会详细讨论指针在数组中的使用。
??? 1.4.1.5把字符串的首地址赋予指向字符类型的指针变量。例如:
?char *pc;
pc=c language;
或用初始化赋值的方法写为:
char *pc= c language ; ??? 这里应说明的是并不是把整个字符串装入指针变量, 而是把存放该字符串的字符数组的首地址装入指针变量。
??? 1.4.1.6把函数的入口地址赋予指向函数的指针变量。例如:
??? int (*pf)();
??? pf=f;??????????????? //f为函数名
??? 1.4.2加减运算
??? 对于指向数组的指针变量,可以加上或减去一个整数n.设ip是指向数组a的指针变量,则ip+n,ip-n,ip++,++ip,ip——,——ip 运算都是合法的。指针变量加或减一个整数n的意义是把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。应该注意,数组指针变量向前或向后移动一个位置和地址加1或减1 在概念上是不同的。因为数组可以有不同的类型, 各种类型的数组元素所占的字节长度是不同的。如指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。而不是在原地址基础上加1.看如下例子:
?char a[20];
int*ip=a;
...
ip++; ??? 在上例中,指针ip的类型是int*,它指向的类型是int,它被初始化为指向整形变量a.接下来的第3句中,指针ip被加了1,编译器是这样处理的:它把指针ip的值加上了sizeof(int),在32位程序中,是被加上了4.由于地址是用字节做单位的,故ip所指向的地址由原来的变量a的地址向高地址方向增加了4个字节。
??? 由于char类型的长度是一个字节,所以,原来ptr是指向数组a的第0号单元开始的四个字节,此时指向了数组a中从第4号单元开始的四个字节。再看如下例子:
?char a[20];
int*ip=a;
...
ip+=5; ??? 在这个例子中,ip被加上了5,编译器是这样处理的:将指针ip的值加上5乘sizeof(int),在32位程序中就是加上了5乘4=20.由于地址的单位是字节,故现在的ip所指向的地址比起加5后的ip所指向的地址来说,向高地址方向移动了20个字节。在这个例子中,没加5前的ip指向数组a的第0号单元开始的四个字节,加5后,ptr已经指向了数组a的合法范围之外了。虽然这种情况在应用上会出问题,但在语法上却是可以的。这也体现出了指针的灵活性。
??? 如果上例中,ip是被减去5,那么处理过程大同小异,只不过ip的值是被减去5乘sizeof(int),新的ip指向的地址将比原来的ip所指向的地址向低地址方向移动了20个字节。
??? 总结一下,一个指针ipold加上一个整数n后,结果是一个新的指针ipnew,ipnew的类型和ipold的类型相同,ipnew所指向的类型和ipold所指向的类型也相同。ipnew的值将比ipold的值增加了n乘sizeof(ipold所指向的类型)个字节。就是说,ipnew所指向的内存区将比ipold所指向的内存区向高地址方向移动了n乘sizeof(ipold所指向的类型)个字节。
??? 一个指针ipold减去一个整数n后,结果是一个新的指针ipnew,ipnew的类型和ipold的类型相同,ipnew所指向的类型和ipold所指向的类型也相同。ipnew的值将比i
您可能关注的文档
- C中头文件函数的使用方法.doc
- 新浪博主荣格格:健康养生——玉米雪梨汤.docx
- 基于BP神经网络分类器的多目标识别方法研究开题报告.doc
- 七年级地理第五节 《美国.doc
- 2012届高考一轮复习一组新型选择题欣赏(精品)2011.10.1.doc
- DSP实验板原理图3页.pdf
- 带轴页轮项目可行性研究报告(2013年发改委评审方案设计)-专家免费咨询.pdf
- 云南省2014年交通厅事业单位考前重点整理.doc
- 七年级一般现在时讲解及练习(精).doc
- 7、电影写实主义3德国.ppt
- 25上半年2期套题班-行政职业能力测验(八).docx
- 公考讲义-2025年1月时政汇总.pdf
- 2025年省考逻辑填空1000 高频实词积累+刷题早读课 讲义.pdf
- 25上半年2期套题班-行政职业能力测验(九).docx
- 2025四川事业编FB综合岗考试-综合能力测试讲义-主观题基础,案例分析题,公文写作及文章写作题.pdf
- 25上半年2期套题班-行政职业能力测验(五).docx
- 2025申论多省联考刷题课真题资料-2025国考执法课程.doc
- 2025申论多省联考刷题课真题资料-2024江西执法课程.doc
- 25上半年2期套题班-行政职业能力测验(十).docx
- 2025申论多省联考刷题课真题资料-2024福建县乡课程.doc
最近下载
- 2025年湖南环境生物职业技术学院单招职业适应性测试题库完整.docx VIP
- 2024年新人教版道德与法治一年级上册 4 平平安安回家来 教学课件.pptx
- 数据治理培训系列-企业数据治理的参考框架_V1.0.doc VIP
- 幼儿园大班语言课件:灯谜乐.ppt VIP
- 2024年微短剧行业白皮书.pptx VIP
- 2024年人教版小学四年级数学下册知识点归纳总结.doc
- 2024年江西旅游商贸职业学院单招综合素质考试试题及答案解析.docx
- 果园监控设备工程方案(3篇).docx
- 电梯安装修理维护焊接作业指导书(符合TSG 07-2019特种设备质量保证管理体系).docx
- 【营销策略研究的国内外文献综述及理论基础2100字】.docx VIP
文档评论(0)