- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
的指针-Piazza
C 语言程序设计指针 周闻钧 朱宏明 本讲内容 地址与指针的概念 变量、数组、字符串、函数指针及其指针变量 指针数组及二级指针 不掌握指针就没掌握C的精华 指针是C语言中的一个重要的概念,也是C语言的一个重要特色 正确而灵活地运用指针: 可以有效的表示复杂的数据结构; 能动态分配内存; 能方便的使用字符串; 方便有效的使用数组; 在调用函数时可以得到多于一个的值; 能直接处理内存地址 掌握指针的应用,可以使程序简洁、紧凑、高效 指针的概念 简单理解,指针就是地址 有变量的、数组的、函数的、字符串的指针等,其实就是从某个地址开始的内存,以何种方式解读而已 内存的访问方式 直接访问 如:i=2, j=6, k=9 通过变量名i、j、k 来访问存储单元。 间接访问 如变量 i,不知道其值及地址,而只知道它的地址放在3008、3009、3010、3011中,因此可通过存放地址的单元找到变量 i 的值,此为间接访问。 对间接访问,可定义一变量存放地址,如定义 i-pointer, 赋值 i-pointer=i 指针的概念 指针的概念(续) 例子:打开一个寝室门的两种办法 将寝室钥匙带在身上,需要时直接找出该钥匙打开寝室门--直接访问 将钥匙放在楼下管理员那里,需要时先找到管理员,从管理员那里拿到钥匙,再打开寝室门--间接访问 一个变量的地址称为该变量的“指针”。 存放地址的变量叫“指针变量”。换句话说,指针变量存放地址。 变量的指针和指针变量 变量的指针就是变量的地址。为了表示指针变量和它指向的变量之间的联系,用*符号表示指向 指针变量的定义 类型标识符* 变量名; 等价于:类型标识符 *变量名; 变量名前面的”*”表示该变量为指针变量, 意为“指向…..的指针”,但指针变量名本身不包含* 指针变量有确定的指向的数据类型 一个指针变量只能指向同一个类型的变量 指针变量的引用 指针变量中只能存放地址,不要将一个整型量赋给一个指针变量(取用内容,结果无法预期) 两个有关的运算符 :取地址运算符 *:指针运算符(或称间接访问运算符) 给指针变量赋值: 赋给变量的地址:int* i; a = 9; i = a; 指针变量的引用 用指针变量对变量赋值 int i, j, *p; p=i; *p=3; j=*p+2; “p=i”的意义为指针变量p指向变量 i 。 注意:p是地址变量,而*p 是非地址变量,与i是一回事。 “*”:为指针运算符或叫指向运算符、间接运算符,为单目运算符。 指针变量的引用 int i, j, *p; p=i; *p=3; j=*p+2; 对和*运算符的说明 结合性:自右向左 int a, b, *p1, *p2; p1 = a; p2 = b; *p1 相当于 (*p1) 等于 (*p1)=(a)=a=p1 *a 相当于 *(a) 等于 *(a)=*(p1)=*p1=a 自增和自减 int a,b,*p; p=a; a=3; b=5; (*p)++; 相当于 a++ ,4 == a *p++; 相当于 *(p++) 若p为1000, 则p++为1004 数组的指针和指向数组的指针变量 一个数组包含若干元素,每个数组元素都在内存中占用存贮单元,他们都有相应的地址。 指针变量也可以指向数组和数组元素 数组的指针是数组的起始地址 数组元素的指针是数组元素的地址 指向数组元素的指针变量的定义与赋值 这种指针变量的定义和指向变量的指针变量相同 int a[10]; int *p; p = a[0]; 把a[0]元素的地址赋给指针变量p。p指向a数组的第0号元素 C语言规定数组名代表数组的首地址,因此p = a[0];等价于p = a; 注意数组a不代表整个数组,上式的作用是把数组a的首地址赋给指针变量p,而不是把数组a的各元素的值赋给p。 通过指针引用数组元素 通过指针引用数组元素可以提高目标程序质量(占内存少,运行速度快) 假设p被定义为指针变量,并已被赋了一个地址,使它指向某一个数组元素。如果有*p = 1;表示对p当前所指向的数组元素赋以一个值 规定,p+1指向数组的下一个元素。例如,数组元素是实型,每个元素占4个字节,则p+1意味着使p的原值加4个字节,以使它指向下一个元素 通过指针引用数组元素 如果p的初值为a[0] p+i和a+i就是a[i]的地址,或者说,他们指向a数组的第i个元素 *(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i] 指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价 引用数组元素 void main(vo
您可能关注的文档
最近下载
- 24张安全目视化:流程图、管理检查要点.pptx VIP
- 2024北京广渠门中学初一(上)期中道德与法治试题.docx VIP
- 2025中级经济师《经济基础知识》三色笔记.pdf VIP
- GB/T 17215.321-2021电测量设备(交流) 特殊要求 第21部分:静止式有功电能表(A级、B级、C级、D级和E级).pdf
- Kollmorgen电机AKD驱动器手册中文版.pdf VIP
- 河南省九师联考2024-2025学年高一上学期11月期中考试地理试卷(含答案).pdf VIP
- 河南省九师联盟2024-2025学年高一上学期期中考试历史试题(含答案).pdf VIP
- 日立电梯MCA13中文注释版电气原理图.pdf
- 财务总监培训战略成本管理-战略成本管理.ppt VIP
- 战略成本管理 .pdf VIP
原创力文档


文档评论(0)