- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言知识回顾之指针
C语言知识回顾之 一、指针在程序中的用途 有效的表示复杂的数据结构 能动态分配内存 方便的使用字符串 直接处理内存地址 总之,指针的应用,使程序简洁、紧凑、高效。 二、指针的概念 1.数据在内存中的存储、读取过程 例如:整型变量 i , j , k ; 在编译时为变量分配内存,内存示意图如图 1 所示. (1) 直接访问方式 按变量地址存取变量值的方式。 如果读取变量 i的值,直接到为变量i分配的存储单元(2000、2001字节)中取出i的值(3)即可。 直接访问示意图 三、 指针变量 1.变量的指针 变量的地址称为变量的指针。 2. 指针变量 存储变量地址的变量称为指针变量,用来指向另一个变量。 3. * 操作符 为了表示指针变量与它所指向的变量的之间的关系,在程序中用 * 符号表示“指向”。 三、 指针变量(续) 4.指针变量的定义 三、 指针变量(续) 6.指针变量的引用 三、 指针变量(续) 例1: 输入两个整数,按先大后小输出这两个整数 三、 指针变量(续) 7.指针变量作为函数参数 四、数组与指针 1.数组的存储 四、数组与指针 四、数组与指针 四、数组与指针 四、数组与指针 四、数组与指针 四、数组与指针 四、数组与指针 四、数组与指针 六、返回指针值的函数 指 针 一、指针在程序中的用途 二、地址和指针的概念 三、变量的指针和指针变量 四、数组与指针 五、字符串与指针 六、返回指针值的函数 主要内容: (2) 给变量赋值为 i=3; j=6; k=9; (1) 假设变量 i,j,k 被分配的 内存地址分别为2000,2002,2004 (3) 通常,在程序中通过变量名对变量 进行存取。 2000 2002 2004 变量i 变量j 变量k 内存中用户数据区 。。。 。。。 3 6 9 2000 3010 内存地址编号 变量 p 其实程序经过编译后已将变量名转换为变量的地址,对变量值的存取都是通过变量的地址进行的。 图1 (2) 间接访问方式 先将变量 i 的地址存放在另一个变量p中,如果读取变量 i的值,先找到变量p,从p中取出内容(2000,即变量i的起始地址),然后到2000、2001字节中取出i的值(3)。 即通过变量p访问为变量i分配的内存单元。 访问变量的两种方式: 间接访问示意图 表示将数值3送到变量i中,可有两种表达方法: (1)将3送到变量i所标志的单元中。即直接访问方式 (2)将3送到变量p所指向的单元(变量i)中。 即间接访问方式 i 3 2000 i 3 2000 2000 p 注意:我们并不关心变量p的存储地址, 对 变量p的访问属于直接访问。 例如,P代表指针变量,* P则表示P所指向的变量。 3 i 2000 2000 P *P 以下两个语句作用相同: i=3; *P=3; int i , j ; int *pointer1, *pointer2; 定义形式: 基类型 *指针变量名; 举例 说明 (1)指针变量名前的*,表示该变量是指针型的变量。指针变量名为pointer1,而非 *pointer1。 (2)定义指针变量时必须指明基类型。 *注:以后几张幻灯片中提到的pointer1 pointer2是基于此例的。 如何使一个指针变量指向一个变量呢? 使用取地址运算符 ,即 :pointer1=i; pointer2=j; 赋值语句pointer1=i;实现将变量i的地址保存入指针变量pointer1中。如右图所示。 3 i pointer1 *pointer1 你能画出第二个赋值语句的示意图吗? 三、 指针变量 5.指针运算符 与指针变量有关的两个运算符: : 取地址运算符 * :间接访问运算符 (1)上例将打印出i的值。 (2)*pointer1 与普通的整型变量一样使用,但前提是pointer1 必须已经明确地指向了某整型变量,或者说指针变量中必须已经存有了某整型变量的起始地址。 例如 i=3;pointer1=i;printf(%d,*pointer1); 说明 3 i pointer1 *pointer1 #i
文档评论(0)