- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言中的指针讲义
C语言中的指针与函数 A 指 针 一个指针是一个特殊变量,它的值是另一个变量的地址。 除寄存器(register)变量外,所有的变量均有地址。地址是变量在内存中存放的位置。在声明一个指针变量时,我们在变量名字前加一个星号 *。 A.1 指向变量的指针 声明字符型变量 a 和指向字符型的指针变量 p: char a=b; char *p; 此处的 p 是指针变量,p 前面的 * 用来声明 p 为一个指针,即 p 是存放一个变量地址的变量,p 指向的变量是字符型的,即 p 存放字符型变量的地址。 指针变量 p 在初始化之前,它的当前值是不定的,语句 p= a; 是将字符变量 a 的地址赋给指向字符型的指针变量 p, 符号 在这里作为一元运算符,是地址运算符,a 是求变量 a 的地址。 上述语句执行后,在 p 内存放 a 的地址,重要的是 p 与 a 的类型要匹配。 用 *p 表示指针p所指的对象,即先取出 p 中的值,得一个地址,再通过此地址得到需要的对象,因此下面的两个语句输出同样的结果’b’: printf(a is %c\n,a); printf(a is %c\n,*p); 我们可用变量的名字 a,也可用指向变量 a 的指针变量 p。这样,要将 a 内的原有值b 改成 d,可直接将 d 赋给变量 a,也可间接地使用指针变量 p,其程序片段为: p=a; /* 初始化 p */ a=d; /* 将 d 直接赋给 a */ *p=d; /*通过指针变量 p 将 d 赋给 a */ 先讨论指向数组元素的指针。 用下面语句声明一个字符型数组和一个指向字符型变量的指针: char line[100],*p; 可用下面的语句给 line 的前两个元素赋值: line[0]=a; line[1]=b; 也可用指针,先对 p 初始化使其指向数组 line 的首址: p=line[0]; /* 第 0 个元素的地址 */ 或直接写成: p=line; /* 数组名字是数组的首址 */ 然后可用下面两个语句给数组的前两个元素赋值: *p=a; *(p+1)=b; 对于每个赋值,编译程序将首先计算元素的地址: 数组名字 line即是数组的首地址,line 加上增量 0,line 加上增量 1,分别是前两个元素的地址。 连续执行下面两个语句 *p++=a; *p++=b; /* 运算符*与++的优先级相同, 结合方向是 “从右到左”*p++ 即 *(p++) */ 指针 p 将两次增1,最终指向 line[2] 的地址。 假设有整型数组和指向整型量的指针: int num[10],*q=num; q 指向 num[0]的地址, 当 q 增 1 时,q 指向 num[1]的地址,要移动 2 个或 4 个字节(依赖于不同的计算机); 而指向字符型的指针增 1 时,只移动一个字节,这就是指针变量与其指向的变量的类型必须要匹配的道理。 若两个指针指向同一数组,这两个指针也可以做比较运算。 以上讨论的是指向数组元素的指针,下面再简单介绍指向一维数组的指针: int a[3][4],(*pa)[4]; pa=a; 第一行声明的 pa 是一个指针,指向有4 个元素的一维整型数组; 第二行通过对pa赋值,使得 pa 等于 a[0][0] 的地址, pa+1 要后移4 个整数,即pa+1 指向 a[1][0] 的地址,*(pa+1)+3 指向a[1][3]的地址,*(*(pa+2)+1) 是a[2][1] 的值 。 也可建立一个指针数组,它的每个元素均是一个指针,存放地址,下面的语句 char *ap[3]; 声明 ap 是一个指向字符型的指针数组,ap 的每个元素存放一个字符串的首址。 若我们用内存动态存储区分配函数分配每个字符串的空间: ap[i]=(char *)malloc(sizeof( 字符串)); 则 ap[i] 指向分配的相应字符串区域的首址。例如: ap[0] 存放 science 的首址 ap[1] 存放 technology 的首址 ap[2] 存放 art 的首址 可以如下表示: ap[0]=(char *)malloc(sizeof( science)); ap[1]=(char *)malloc(sizeof(techonology)); ap[2]=(char *)malloc(sizeof(art)); A.4 指向结构的指针 可定义一个结构数组,然后用指针指向此数组的第一个元素,这等同于我们以前讨论的指向数组元素的指针。例如: struct exp
您可能关注的文档
- CYP2C19-基因检测对药物的个体化治疗讲义.ppt
- c三4演示文稿1讲义.ppt
- C区电渣压力焊2讲义.doc
- CZT型高效旋风分离器讲义.doc
- c数据结构chapt10讲义.ppt
- C演示文稿07讲义.ppt
- c电学仪表的使用和选择讲义.ppt
- c数据结构chapt8图讲义.ppt
- c图论(存档)(北邮信通院陈鑫林教授授课PPT)讲义.ppt
- C程序设计4--顺序程序设计1讲义.ppt
- 专题 07 读后续写如何描述肢体动作 (写作专练) -2026年英语高考专题复习(全国通用).docx
- 中国商务部20XX年统计报表.xlsx
- 2026届高考语文写作指导 课件:对“记忆移植”的思考材料作文讲评.pptx
- 2026届高考语文一轮复习 课件:“真正的伟人决不抛弃童真”作文导写 课件.pptx
- 【时政探究】中国人民抗日战争暨世界反法西斯战争胜利80周年-2026年高考政治时政热点素材讲练 课件.pptx
- 专题09 小说阅读(一)(解析版)-2026年中考语文复习必威体育精装版试题讲练(浙江专用).docx
- 专题09 小说阅读(一)(原卷版)-2026年中考语文复习必威体育精装版试题讲练(浙江专用).docx
- 12.1三角形(教学课件)-2025-2026学年八年级数学上册(北京版2024).pptx
- 实用作文素材积累08(“法国小伙马库斯向中方捐赠618张日军侵华历史照片”写作素材)-备战2026年高考语文作文实用素材积累与运用(全国通用).docx
- 2026届高考语文作文序列化复习 课件:议论文开头写作指导.pptx
最近下载
- 中华人民共和国职业技能鉴定规范:汽轮机本体检修工.docx VIP
- 智慧医疗分级评价方法及标准(2025版)(征意).docx
- NBT35002-2011水力发电厂工业电视系统设计规范.pdf VIP
- 建设100万高标准蛋鸡养殖场项目可行性研究报告写作模板-申批立项.doc
- 2025年第一季度入党积极分子思想汇报四篇.docx VIP
- 2025福建泉州鲤城区国有企业招聘15人考试备考题库及答案解析.docx VIP
- 核心素养背景下的高中语文课堂教学策略.pptx VIP
- 护理学基础-饮食护理.ppt VIP
- 色温色坐标互算公式.xls VIP
- 最近整理移动式升降机施工方案移动升降机施工方案.pdf VIP
文档评论(0)