C语言程序设计课件.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.1 地址和指针的概念 9.2 变量的指针和指向变量的指针变量 9.3 数组与指针 9.4 字符串与指针 9.5 指向函数的指针 9.6 返回指针值的函数 9.7 指针数组和指向指针的指针 第9章 指针 本章 重点 本节 难点 1、掌握指针变量的概念、定义和引用 2、掌握指向一维数组的指针变量和指向字符串的指针变量的定义及使用 3、掌握数组元素和字符串中字符的指针变量的使用 4、掌握变量作函数参数与数组名或字符串作函数参数的关系 5、掌握指针数组处理若干字符串的方法 1、指针与数组的关系 2、指针变量作函数参数 3、指针数组的使用 4、指向指针的指针的使用 一、指针概述: 1、地址的概念与取地址运算: 内存以字节编码,每个编码都是一个地址。我们原先学过的变量、数组、函数等都放在内存中,至于它们放在内存的什么地方,这都是机器的事,我们只要知道它们是以怎样的顺序放在内存中的,以便一一按顺序引用。我们怎样知道机器将某种数据放在内存的什么地方呢?可用求地址运算符 如:int a = 3 ; a 就是变量在内存中的地址。 可以用printf(“%x \n” , a); 看出其地址。注意,这个地址并不是始终不变的,这是由机器和操作系统来安排的,我们无法预先知道。 9.1地址和指针的概念 则a表示的地址和a [0]的地址相同。 但不能施加在常数、常量或表达式上,也不能施加在寄存器变量上(因为寄存器变量在cpu中,不在内存中)。 二、指针变量: 既然存储在内存中的各种变量都有一个地址,我们能否这样设想:定义某种变量,让这个变量的值始终等于某个变量的地址,如同某个房间号、门牌号一样?回答是肯定的。我们把这种存放某种变量地址的变量称为指针变量。 10 35 …. a b 2010 2012 p 2010 q 2012 因此,在C语言中,将地址形象化地称为指针 9.1地址和指针的概念 说明(系统对变量的访问形式分为两种) 一个变量的访问(访问是指取出其值或向它赋值)方式有两种: (1)直接访问,通过变量名访问,如通过变量名i直接访问。 (2)间接访问,通过该变量的指针来访问,如通过指针p访问变量i。 9.2 变量的指针和指向变量的指针变量 基类型,即该指针变量所指向的变量的类型 三、定义指针变量: [存储类型 ] 数据类型 * 指针变量名1 ,* 指针变量名2,… ; 如: int *p, a = 3; int *q, b=5; 如何使一个指针变量指向另外一个变量呢? P=a; q=b; 10 35 …. a b 2010 2012 p 2010 q 2012 9.2 变量的指针和指向变量的指针变量 为什么要为指针变量定义类型: 由于不同的数据有不同的数据类型,如 char仅占一个字节、int 占两个字节、float型占三个字节,而内存又是以字节为单位进行地址编号,因而对char型,只要地址数加减1,取出里面的数据就是char型的完整数据。对int型就不同了,要取出其中的数据需2字节,就不能对地址进行简单的加减1了。怎样取出一个完整的int型数据或float型数据呢?如果能够将指针变量也定义为具有同样的数据类型,那么对指针进行加1或减1运算,就是让指针移动相应基类型对应的字节数。 9.2 变量的指针和指向变量的指针变量 二、指针变量赋值(这里要用到取地址运算符“”) 指针变量的赋值:例、 pointer_1 = i; pointer_2 = j; 注意,指针变量中只能存放地址,不能将一个非地址类型的数据(如常数等)赋给一个指针变量,如:pointer_1 = 100; 3.14 2.12 p P+1 4byte p P+1 P+2 P+3 1 2 3 4 2byte 9.2 变量的指针和指向变量的指针变量 也可以在定义指针变量的同时指定其初值,如、 int a; int *p = a; 三、指针变量的引用 1、取地址运算:如: int *p , i=3, j=5; p=i; /*让p其指向 变量i */ 2、对指针变量施加*运算,则代表取指针所指向的单元的内容。 这里,*p与变量i是等价的。 区分:*运算符在不同场合的作用,编译器能够根据上下文环境判别*的作用。int a,b,c; int * p;

文档评论(0)

爱遛弯的张先生 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档