C 语言程序设计精品课 《C语言程序设计》 课程讲义 荆程 第九章指针 2006年4月 技术系
结束 首页 上页 下页 末页 节 《C语言程序设计》 课程讲义 第九章 指针 2006年4月
C 语 上次课程的回顾 程 设 计 櫛1、掌握C语言的函数的概念、定义和调用 课2、掌握函数的嵌套调用和递归调用 荆程3、掌握全局变量和局部变量以及自动变量、 静态变量和寄存器变量的特点和关系 技术系
结束 首页 上页 下页 末页 节 1、掌握C语言的函数的概念、定义和调用 2、掌握函数的嵌套调用和递归调用 3、掌握全局变量和局部变量以及自动变量、 静态变量和寄存器变量的特点和关系 上次课程的回顾
第9章指针 程9地址和指针的概念 设9.2变量的指针和指向变量的指针变量 进9.3数组与指针 精9.4字符串与指针 课9.5指向函数的指针 州程96返回指针值的函数 9.7指针数组和指向指针的指针 技术系
结束 首页 上页 下页 末页 节 9.1 地址和指针的概念 9.2 变量的指针和指向变量的指针变量 9.3 数组与指针 9.4 字符串与指针 9.5 指向函数的指针 9.6 返回指针值的函数 9.7 指针数组和指向指针的指针 第9章 指针
C 掌握指针变量的概念、定义和引用 语言程序设计精品 2、掌握指向一维数组的指针变量和指向字符串的指针变量的 定义及使用 3、掌握数组元素和字符串中字符的指针变量的使用 4、掌握变量作函数参数与数组名或字符串作函数参数的关系 5、掌握指针数组处理若干字符串的方法 课节 荆程 、指针与数组的关系 2、指针变量作函数参数 3、指针数组的使用 4、指向指针的指针的使用 技术系
结束 首页 上页 下页 末页 节 本 章 重 点 本 节 难 点 1、掌握指针变量的概念、定义和引用 2、掌握指向一维数组的指针变量和指向字符串的指针变量的 定义及使用 3、掌握数组元素和字符串中字符的指针变量的使用 4、掌握变量作函数参数与数组名或字符串作函数参数的关系 5、掌握指针数组处理若干字符串的方法 1、指针与数组的关系 2、指针变量作函数参数 3、指针数组的使用 4、指向指针的指针的使用
C 语9.1地址和指针的概念 程 指针概述 计1、地址的概念与取地址运第 内存以字节编码,每个编码都是一个地址。我们原先学过 精 的变量、数组、函数等都放在内存中,至于它们放在内存的什么 地方,这都是机器的事,我们只要知道它们是以怎样的顺序放在 内存中的,以便一一按顺序引用。我们怎样知道机器将某种数据 放在内不的什么地方呢?可用求地址运算符 如:inta=3 &a就是变量在内存中的地址。 可以用 printf(“%x\n”,&a);看出其地址。注意,这 个地址并不是始终不变的,这是由机器和操作系统来安排的,我 们无法预先知道。 技术系
结束 首页 上页 下页 末页 节 一、指针概述: 1、地址的概念与取地址运算: 内存以字节编码,每个编码都是一个地址。我们原先学过 的变量、数组、函数等都放在内存中,至于它们放在内存的什么 地方,这都是机器的事,我们只要知道它们是以怎样的顺序放在 内存中的,以便一一按顺序引用。我们怎样知道机器将某种数据 放在内存的什么地方呢?可用求地址运算符& 如:int a = 3 ; &a 就是变量在内存中的地址。 可以用printf(“%x \n” , &a); 看出其地址。注意,这 个地址并不是始终不变的,这是由机器和操作系统来安排的,我 们无法预先知道。 9.1地址和指针的概念
C 语9.1地址和指针的概念 程序设计精品课 则a表示的地址和&a[0]的地址相同。 但&不能施加在常数、常量或表达式上,也不能施加在寄存器 变量上(因为寄存器变量在cpu中,不在内存中) 二、指针变量: 既然存储在内存中的各种变量都有一个地址,我们能否这样设 想:定义某种变量,让这个变量的值始终等于某个变量的地址, 如同某个房间号、门牌号一样?回答是肯定的。我们把这种存放 荆程 某种变量地址的变量称为指针变量。 2010 10 a 技因此,在C语言中,将地2012 35 b 址形象化地称为指针 2010 技术系
结束 首页 上页 下页 末页 节 则a表示的地址和&a [0]的地址相同。 但&不能施加在常数、常量或表达式上,也不能施加在寄存器 变量上(因为寄存器变量在cpu中,不在内存中)。 二、指针变量: 既然存储在内存中的各种变量都有一个地址,我们能否这样设 想:定义某种变量,让这个变量的值始终等于某个变量的地址, 如同某个房间号、门牌号一样?回答是肯定的。我们把这种存放 某种变量地址的变量称为指针变量。 10 35 …. a b 2010 2012 2010 p 2012 q 因此,在C语言中,将地 址形象化地称为指针 9.1地址和指针的概念
语9.2变量的指针和指向变量的指针变量 程说明(系统对变量的访间形式分为两种 设一个变量的访问(访问是指取出其值或向它赋值)方式有两 计 种 精(1)直接访问,通过变量名访问,如通过变量名接访问。 课(2)间接访问,通过该变量的指针来访问,如通过指针p访 荆程问变量i。 技术系
结束 首页 上页 下页 末页 节 说明(系统对变量的访问形式分为两种) 一个变量的访问(访问是指取出其值或向它赋值)方式有两 种: (1)直接访问,通过变量名访问,如通过变量名i直接访问。 (2)间接访问,通过该变量的指针来访问,如通过指针p访 问变量i。 9.2 变量的指针和指向变量的指针变量
语9.2变量的指针和指向变量的指针变量 程三、定义指针变量: 设[存储类型]数据类型*指针变量名1指针变量 计名2, 精 如:int*p,a=3; 基类型,即该指针变 int *9, b=5; 量所指向的变量的类 课 型 荆程 如何使一个指针变量指向另2010 10 a 求外一个变量呢? 35 2012 P=&a; ■■■ 2010 q=&b; 2012q 技术系
结束 首页 上页 下页 末页 节 基类型,即该指针变 量所指向的变量的类 型 三、定义指针变量: [存储类型 ] 数据类型 * 指针变量名1 ,* 指针变量 名2,… ; 如: int *p, a = 3; int *q, b=5; 如何使一个指针变量指向另 外一个变量呢? P=&a; q=&b; 10 35 …. a b 2010 2012 2010 p 2012 q 9.2 变量的指针和指向变量的指针变量
语9.2变量的指针和指向变量的指针变量 程为什么要为指针变量定义类型 设由于不同的数据有不同的数据类型,如char仅占 计个字节、int占两个字节、foat型占三个字节,而内存 荐/文是以字节为单位进行地址编号,因而对char型,只 要地址数加减1,取出里面的数据就是char型的完整 课数据对m型就不同了,要取出其中的数据需2字节 删程就不能对地址进行简单的加减1了。怎样取出一个完整 的in型数据或 float型数据呢?如果能够将指针变量也 定义为具有同样的数据类型,那么对指针进行加1或减 1运算,就是让指针移动相应基类型对应的字节数 技术系
结束 首页 上页 下页 末页 节 为什么要为指针变量定义类型: 由于不同的数据有不同的数据类型,如 char仅占一 个字节、int 占两个字节、float型占三个字节,而内存 又是以字节为单位进行地址编号,因而对char型,只 要地址数加减1,取出里面的数据就是char型的完整 数据。对int型就不同了,要取出其中的数据需2字节, 就不能对地址进行简单的加减1了。怎样取出一个完整 的int型数据或float型数据呢?如果能够将指针变量也 定义为具有同样的数据类型,那么对指针进行加1或减 1运算,就是让指针移动相应基类型对应的字节数。 9.2 变量的指针和指向变量的指针变量
语9.2变量的指针和指向变量的指针变量 byte 程序设计精品课 3.14 byte P+1 2 P+2 3 P+1 P+3 4 删程=、指针变量赋值(这里要用到取地址运算符“a 指针变量的赋值:例、 pointer 1= &i: pointer_2=&j 注意,指针变量中只能存放地址,不能将一个非地址类型的数据(如常 数等)赋给一个指针变量,如: pointer1=100; 技术系
结束 首页 上页 下页 末页 节 二、指针变量赋值(这里要用到取地址运算符“&”) 指针变量的赋值:例、 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 变量的指针和指向变量的指针变量