- 1、本文档共120页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.1 指针与指针变量 8.2 指向数组的指针变量 8.3 指向字符串的指针变量 8.4 指针数组与命令行参数 8.5 指针与函数 8.6 指针小结 教学提示 “指针”是C语言中广泛使用的一种数据类型,运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构,实现动态内存分配,不但能很方便地使用数组和字符串,还能像汇编语言一样处理内存地址,从而编出精练而高效的程序。但是,由于指针概念较复杂,使用较灵活,初学者常常感到较难理解,因此,学习时必须从指针的概念入手,正确理解指针及指针在数组和函数方面的应用。 教学目标 要求学生掌握指针的概念和运算规则,掌握用指针访问变量、一维数组和二维数组的方法,以及用指针处理字符串的方法。通过多编程、多上机调试程序来体会指针的概念及其使用的规律,并应用于实际的编程中。 8.1 指针与指针变量 8.1.1 指针的概念 1.内存与内存地址 内存地址:内存是计算机用于存储数据的存储器,以一个字节作为存储单元,为了便于访问,给每个字节单元一个唯一的编号,第一字节单元编号为0,以后各单元按顺序连续编号,这些单元编号称为内存单元的地址 。 变量地址:变量所分配存储空间的首字节单元地址(字节单元编号)。 系统为特殊变量p(用来存放地址的)分配的存储空间地址是4800,p中保存的是变量a的地址,即4000,当要读取a变量的值12345时,不是直接通过a变量,也不是直接通过保存12345的内存单元的地址4000去取值,而是先通过变量p得到p的值4000,即a的地址,再根据地址4000读取它所指向单元的值12345。 这种间接的通过变量p得到变量a的地址,再存取变量a的值的方式即为“间接存取”。 通常称变量p指向变量a,变量a是变量p所指向的对象 4、变量值的存取──通过变量在内存中的地址进行存取 系统执行“scanf(”%d“,a);”和“printf(”a=%d\n“, a);”时,存取变量a值的方式可以有两种: 直接访问──直接利用变量的地址进行存取。 1)上例中scanf(“%d”,a)的执行过程是这样的: 通过变量名a找到变量a的起始地址3000;然后将键盘输入的值(假设为3)送到内存单元3000和3001中。此时,变量a在内存中的地址和值,如图8.4所示。 5.指针的概念 在C语言中,用指针来表示一个变量指向另一个变量这样的指向关系。 所谓指针即地址。 一个变量的指针即该变量的地址,如4000就是指向变量a的指针。 指针变量:专门存放地址的变量,如p即是一个指针变量,它存放的是a的地址4000。 8.1.2 指针变量的定义与初始化 1. 指针变量的定义 基类型 *指针变量名; 例:float *p1; (定义p1为指向实型变量的指针变量) char *p2; (定义p2为指向字符型变量的指针变量) 在指针变量定义中,*是一个说明符,它表明其后的变量是指针变量,如p是指针变量,而不要认为“*p”是指针变量。 指针变量定义时指定的数据类型不是指针变量本身的数据类型,而是指针变量所指向的对象(或称目标)的数据类型 指针变量存放的是所指向的某个变量的地址值,而普通变量保存的是该变量本身的值 指针变量并不固定指向一个变量,可指向同类型的不同变量 (1) 指针运算符与地址运算符 与指针引用有关的两个运算符:与* ? :取地址运算符 ?*:指针运算符,或称指向运算符、间接访问运算 符。 指针指向的对象的表示形式: *指针变量 此处*是访问指针所指对象的运算符,与指针定义时的*不同。 (2) 指针变量初始化 若有定义: int a,*p; 语句仅仅定义了指针变量p,但指针变量并未指向确定的变量(或内存单元)。因为这些指针变量还没有赋给确定的地址值,只有将某一具体变量的地址赋给指针变量之后,指针变量才指向确定的变量(内存单元)。 指针变量初始化:在定义指针时同时给指针一个初始值 如: int a,*p=a; 8.1.3 指针变量的引用 与指针引用有关的两个运算符: (1):取地址运算符 (2)*:指针运算符(或称间接访问运算符) 8.1.4 指针运算 1. 指针的赋值运算 (1)将变量地址值赋给指针变量,使指针指向该变量。 设有如下定义: int a,b,*pa,*pb; float *pf; 第一行定义了整型变量a,b及指针变量pa,pb。pa、pb还没有被赋值,因此pa、pb没有指向任何变量, 下面语句完成对pa,pb的赋值: pa=a; pb=b; 例如: int j,
您可能关注的文档
最近下载
- 民事陪审员培训课件.pptx VIP
- 材料科学基础:第十二章 金属材料强韧化机制.ppt VIP
- CNAS-GL27-2009 声明检测或校准结果及与规范符合性的指南.pdf VIP
- 胃脘痛护理查房.ppt VIP
- 【行业研报】2023年肯尼亚行业企业战略规划方案及未来五年行业预测报告.docx VIP
- 人民陪审员培训课件.pptx VIP
- 《氧化还原反应方程式的配平》练习题 .pdf VIP
- 部编六年级下册第11课《十六年前的回忆》一等奖教学设计说课稿.docx VIP
- GB_T 39637-2020 金属和合金的腐蚀 土壤环境腐蚀性分类.pdf
- 聚硼硅氮烷合成、掺杂及SiBCN陶瓷应用研究.docx VIP
文档评论(0)