- 1、本文档共91页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 指 针 10.1 地址和指针的概念 10.2 变量的指针和指向变量的指针变量 10.3 数组与指针 10.4 字符串与指针 10.5 指向函数的指针 10.6 返回指针值的函数 10.7 指针数组和指向指针的指针 10.8 有关指针的数据类型和指针运算的小结 10.1 地址和指针的概念 如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元.编译系统根据程序中定义的变量类型,分配一定长度的空间.如: 整型 2个字节 单精度类型 4个字节 字符型 1个字节 内存区的每一个字节有一个编号,这就是“地址”。 在程序中一般是通过变量名来对内存单元进行存取操作的.其实程序经过编译以后已经将变量名转换为变量的地址,对变量值的存取都是通过地址进行的. 如printf(“%d”,i); 根据变量名i与地址的对应关系,找到i的地址,再从该地址开始的两个字节取出数据,然后输出. 又如:scanf(“%d”,i); 从键盘读入一个值送到i的地址中 k=i+j;… 这种按变量地址存取变量值的方式称为“直接访问”方式。 还可以采用另一种称之为“间接访问”的方式,将变量的地 址存放在另一个变量中。C语言规定可以定义这样一种变量, 它是存放地址的.若定义一个地址变量,用来存放整型变量的 地址,则可以: i_pointer=I;那么取i的值可有两种方式,直 接找到i的地址;或者找到i_pointer,取出i的地址,再找到i. 将数值3送到变量中,可以有两种表达方法: (1) 将3送到变量i所标志的单元中,见图10.2(a)。 (2) 将3送到变量i_pointer所指向的单元中,见图10.2(b)。 (a) (b) 图10.2 所谓“指向”就是通过地址来体现的。i_pointer中的值为2000,它是变量i的地址,这样就在i_pointer和变量i之间建立起一种联系,即通过i_pointer能知道i的地址,从而找到变量i的内存单元。图10.2中以箭头表示这种“指向”关系。 由于通过地址能找到所需的变量单元,我们可以说,地址“指向”该变量单元。因此在C语言中,将地址形象化地称为“指针”。 如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。上述的i_pointer就是一个指针变量。指针变量的值(即指针变量中存放的值)是指针(地址)。 10.2 变量的指针和指向变量的指针变量 变量的指针就是变量的地址。存放变量地址的变量是指针变量,用来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在程序中用“*”符号表示“指向”,例如,i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量,见图10.3。 10.2.1 定义一个指针变量 int I,j; int *pointer_1,*pointer_2; int是在定义指针变量时必须指定的基类型,指针变量的基类型用来指定该指针变量可以指向的变量的类型。 定义指针变量的一般形式为 基类型*指针变量名;下面都是合法的定义: float *pointer_3;(pointer_3是指向实型变量的指针变量) char *pointer_4;(pointer_4是指向字符型变量的指针变量) 下面用赋值语句使一个指针变量指向一个整型变量: pointer_1=i; pointer_2=j; 将变量i的地址存放到指针变量pointer_1中,因此pointer_1就“指向”了变量i。同样,将变量j的地址存放到指针变量pointer_2中,因此pointer_2就“指向”了变量j。 注意两点: (1)指针变量前面的“*”表示该变量的类型为指针变量,指针变量名是pointer_1,pointer_2,而不是*pointer_1, ,*pointer_2。 (2)在定义指针变量时必须指定基类型。因为每种类型所占字节数不一样,指针移动时距离也不一样。 如:float a; int *pointer_1; pointer_1=a; 10.2.2 指针变量的引用 指针变量只能存放地址,不能存放整数。 如:pointer_1=100; (错误) 有两个有关的运算符:
您可能关注的文档
最近下载
- (必会)人身险销售从业人员近年考试真题题库汇总(答案).docx
- 大队委竞选讲话稿PPT.pptx
- 毕业论文_-——汽车凸轮轴加工工艺分析.doc
- 国家安全概论-西安交通大学-中国大学MOOC慕课答案.pdf
- 2024年中国成人心肌炎临床诊断与治疗指南解读课件PPT.pptx
- 2024-2025学年小学信息技术(信息科技)四年级全一册义务教育版(2024)教学设计合集.docx
- 项目四 任务六 旅游娱乐(练习-解析版)-《旅游概论》 (高教社第二版)同步精品课堂.docx
- 第四届-全国大学生结构设计信息技术大赛竞赛题-20211206.docx
- 慢性阻塞性肺疾病患者健康服务规范(试行)培训课件.pptx
- 《全国医疗服务价格项目规范(2012年版)》规范目录.pdf
文档评论(0)