- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主要内容;基本知识点
? 指针变量的定义
? 指针运算符(取地址运算符“”和取内容运算符“*”)
? 指针变量的初始化
? 指针变量的各种运算
? 指针变量与一维数组
? 指向多维数组元素和指向分数组的指针
? 字符串指针变量
? 字符串的表示和引用
? 指针数组的定义和使用
? 多级指针变量的使用方法
? 指针型函数设计方法
? 指向函数的指针变量的应用
? 命令行参数的应用方法
;6.1 指针和指针变量 ;注意:
既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址,也可以是其他类型数据的地址,如数组或函数的首地址。可以在一个指针变量中存放一个数组或一个函数的首地址。因为数组或函数都是连续存放的,所以通过访问指针变量取得了数组或函数的首地址,也就找到了该数组或函数。凡是出现数组、函数名的地方都可以用一个指针变量来表示,只要该指针变量中赋予数组或函数的首地址即可。;6.2 指针变量的定义及其运算 ;2. 指针运算符
在C语言中,提供两种指针运算符:
(1)取地址运算符“” 2p = 2(p)
(2)取内容运算符“*” 2**p = 2*(*p)
比较:
(1)算术运算符号 * ,指针符号 * ,指针运算符 *
(2)int x,*px;
X,x,px,*px
(3)px本身也有存储地址,px,px,x(*px)三者之间的关系。
(4)若定义: int a,*pa=a;
*pa
*a
(*pa)++ 括号的重要性
;3. 指针变量的初始化
指针初始化的一般格式如下:
基类型 *指针变量名=初始地址值;
初始化过程:系统按照给出的基类型,在一定的存储区域内为指针变量分配存储空间,同时把初始值置入指针变量的存储空间,从而该指针变量就指向了初始地址值给定的存储空间。
float x;
float *px=x;
例5.3 分析以下程序的运行结果。
;4. 指针变量的运算
指针变量的算术运算
(1)指针变量与整数的加减运算
p+(-)n ? p+(-)n*sizeof(type)
short int *p;
printf(%x,%x\n,p,p+3);
(2)指针变量加1、减1运算
指向上一个或下一个数据的位置
short int *p;
printf(%x\n,p);
p++;
printf(%x\n,p);
(3)指针变量的相减运算
并不是地址值之间直接做减法运算,两个指针变量相减的结果值是整数,表示该两个指针变量所指地址之间的数据个数。
;指针变量的关系运算
基类型相同的两个指针变量之间的关系运算表示它们指向的地址位置之间的关系。
? 指向同一数组的两个指针变量之间可以进行“=”、“”、“=”、“”、“= =”的比较运算。
? 指针可与0比较,p= =0表示p为空指针。
;指针变量的赋值运算
指针变量赋值运算常用的几种情况是:
(1)把一个变量的地址赋给一个相同基类型的指针变量。
char c,*pc;
pc=c;
(2)把一个指针变量的值赋给相同基类型的另一个指针。
char *pc1,*pc2;
pc1=pc2;
(3)把数组的地址赋给相同类型的指针。
char name[10],*pc;
pc=name;
(4)把字符串的首地址赋予指向字符类型的指针变量。
char *pc;
pc=“China”; 或 char *pc=“Chian”;
例5-4 分析以下程序的运行结果。
;6.3 指针变量和数组 ;(2)通过指针引用数组元素
访问数组元素的一般格式是:
数组名[下标]
进一步转换为:
地址[整数n]
含义:访问以“地址”为起点的第n个数据。
如:a[i] 如果a是数组名,则a[i] 恰好是a的第i个元素。
访问数组元素a[i]的运算过程:
首先计算a+i得到第i个数据的地???,然后访问该地址中的数据。*(a+i)
所以: a[i] ? *(a+i)
使用指针处理内存中连续存储的数据时候,可以使用 *(p+i)
;例5-5 分析程序的运行结果。
void main()
{
static int a[]={10,20,30};
int *pa=a,i;
cout*paendl;
cout*++paendl;
coutpa[2]endl;
for (i=0;i3;i++)
couta[i]endl;
coutendl;
for (i=0,pa=a;i3;i++,pa++)
cout*paendl;
coutendl;
}
您可能关注的文档
- 票据粘贴方法-辽宁大学计财处.ppt
- 福建省高等教育自学考试面向社会开考专业2015年4-福建省教育考试院.doc
- 离岸融资-深圳市对外经济贸易服务中心.ppt
- 离心管的使用.ppt
- 禾丰开发科技有限公司TEL02-8228-6089HONOVARESOURCES.doc
- 种植我们的植物(上).ppt
- 科学、艺术考察活动的策划.ppt
- 科技英语的词汇及翻译.ppt
- 租用馆管理员培训.ppt
- 秦九韶算法设是一个n次的多项式对该多项式按下面的方式进行改写.ppt
- 党员领导干部在理论学习中心组主题会议上的发言材料汇编(6篇).docx
- 2023年行政执法工作计划汇编(4篇).docx
- 国企领导干部学习董事长在新提任干部讲话精神心得汇编7篇.docx
- 学习《著作选读》第一卷、第二卷心得体会汇编(9篇).docx
- 关于切实做好国庆期间安全生产工作的通知汇编(5篇).docx
- 在2023年招商引资推介会上的推介词汇编(5篇).docx
- 医院年终工作总结汇编(共10篇)官方抖音号:笔尖耕耘.docx
- 2022年度镇和开发区书记抓基层党建工作述职报告汇编(7篇),提纲值得参考!1.docx
- 教育主题经验交流材料汇编(5篇).docx
- 在党内主题教育专题推进会议上的讲话汇编(3篇).docx
文档评论(0)