网站大量收购独家精品文档,联系QQ:2885784924

数组指针.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数组指针

指针 指针是C语言的一个重要概念,也是C的一个重要特色。正因为有了指针,C语言才可以灵活有效的表示复杂的数据结构,更方便地处理诸如内存、字符串、数组、函数等。可以说,不掌握指针就不能掌握C的精华。 本章着重介绍有关指针的基本概念和运算。 §10.1 地址和指针的概念 10.1.1 地址的概述 存储器地址 计算机所处理的数据,总是要存储在一定的存储介质上,例如内存。而这些数据的存储,又是有一定先后顺序的。因此我们通常将这些存储介质上的一个个用于存放数据的基本单元进行线性编址,即按照一定的顺序给每个存储单元(字节)一个编号,这个编号就是该单元的地址。一般情况下,地址总是从0开始的一系列整数。 某个地址就代表某个存储单元,就如一个房间号码对应于一个实际的房间一样。 存储单元的内容 这是不同于地址的另一概念,它是指某地址单元内具体存放的数据,如一个字符、一个整数、实数或一个字符串。 例:如右图 100,101,102,…,205,206等即是地址; 160单元的内容就是字符C,161单元的内容就是字符H,…,等。 变量的访问 一般情况下,程序中的一个变量就对应存储器的若干个单元,对变量的访问可以简单地认为是通过变量名来对内存单元进行存取操作。实际上,程序在编译之后,变量名已经转化为了与该变量对应的存储单元地址,因而对变量的访问就是通过地址对存储单元的访问。 直接访问 按照变量地址来对变量进行存取的方式,称为直接访问方式。 例如:右表中对变量a的读取:printf(“%d”,a),其实是先找到a的地址160,然后从160开始读取一个字节的字符‘C’;同理用scanf(“%d”,b)输入b的值时,在执行时,直接把从键盘输入的数据‘H’送入从地址为161开始的字节单元中。 间接访问 通过另一变量间接获取某变量的地址,从而间接实现对原变量的访问的方式,称为间接访问方式。 例如:将变量a的地址160存放在另一个变量当中,见上表p=160,那么,对变量a的访问也可以为:先通过变量p的地址205找到该单元的数据160,再将160视为地址,该地址单元内容就是变量a的值(字符‘C’)。 10.1.2 指针的概念 变量的指针 变量的指针:变量的地址,称该变量的指针。指针即地址,总是“指向”对应变量的。 指针变量 指针变量:专门用于存放另一变量的地址(指针)的变量,称为指针变量。即指针变量中存放的是某个变量的指针(地址)。 如:上表中的 p变量是指针变量,指向变量a的地址;而160即是指针,是变量a的地址。 §10.2 变量的指针和指向变量的指针变量 10.2.1 指针变量的定义 格式:基类型 *指针变量名 功能:定义一个指向另一个属于“基类型”的指针变量。 例如:int *i_pointer;/* 定义一个指针变量i _pointer,它指向一个整型变 量(即i _pointer中存放的是一个整型变量的地址)*/ 10.2.2 指针变量的引用 指针变量的初始化 在引用指针变量前,必须对它初始化,否则会得到不可预料的值。因为在初始化之前,该指针变量并未指向任何一个具体的变量。初始化方法如下: 定义时初始化 如:int i,*p=i; /*定义指针变量p,并将它指向变量i。*/ 不在定义时初始化,但必须在使用之前初始化 如:int j=100,k=20,*p1,*p2; p1=j;p2=k; printf(“%d %d”,*p1,*p2); 说明 初始化时,“”之后的变量的类型必须与定义指针变量时的“基类型”相一致;如整型指针不能指向非整型的变量(也不能指向字符型变量等)。 与指针变量有关的运算符 &:取地址的运算符 *:指针运算符(或称“间接访问”运算符) 优先级及结合方向 “”和“*”的运算级别相等,且都是“右结合” 例如:int a=10,*p;p=a; 则*p等效于 (*p)。因为“”和“*”的运算级别相等,且都是“右结合”,因此先算*p,即是变量a;再算,取出变量a的地址。(*p)++等价于a++。 指针变量的引用 通过例子来说明。 例10.1:通过指针变量访问整型变量。 main() {int j=100,k=20,*p1,*p2; p1=j;p2=k; /* 将变量j的地址赋给指针变量p1,k的地址赋给p2 */ printf(“%d %d”,*p1,*p2);/*p1,p2为指针,必须通过指针运算符“*” 间接访问变量j和k。后两句的输出功能一致*/ pr

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档