第5章 指针
第5章 指 针
回顾 口数组是可以在内存中连续存储多个元素的结构数组中的所 有元素必须属于相同的数据类型 口数组必须先声明,然后才能使用。声明一个数组只是为该 数组留出内存空间,并不会为其赋任何值 口数组的元素通过数组下标访问 口一维数组可用一个循环动态初始化,而二维数组可用嵌套 循环动态初始化 口二维数组可以看作是由一维数组的嵌套而构成的
回顾 ❑ 数组是可以在内存中连续存储多个元素的结构数组中的所 有元素必须属于相同的数据类型 ❑ 数组必须先声明,然后才能使用。声明一个数组只是为该 数组留出内存空间,并不会为其赋任何值 ❑ 数组的元素通过数组下标访问 ❑ 一维数组可用一个循环动态初始化,而二维数组可用嵌套 循环动态初始化 ❑ 二维数组可以看作是由一维数组的嵌套而构成的
目标 口理解指针的概念 口定义指针变量 口掌握对指针的操作 口理解指针和数组的关系
目标 ❑理解指针的概念 ❑定义指针变量 ❑掌握对指针的操作 ❑理解指针和数组的关系
int x, y, Z5 x=58 y=32; Z=X+y 定义了三个整型变量x、y、Z,编译时系统会自动 为它们各自分配两个内存单元(因为整型量古2个单 元),假设3000和3001两个单元分配给变量x,3002和 3003分配给变量y,3004,3005分配给变量z。如图5 所西9其中每个变量占用的内存单元的首地址即为该 变量的地址。如变量x的地址为3000,y的地址为3002, 的地址为3004。 执行语句x=58;首先是根据变量名与地址的对应 关系,找到变量x的地址3000,然后将数据586懂到丛 由300始的两个字节中。同理,y=32语句的行将 数据3存储到从由300.开始的两个字节中。显然 32则分别为变量x和y所对应的内容
int x,y,z; x = 58; y = 32; z = x + y; 定义了三个整型变量x、y、z,编译时系统会自动 为它们各自分配两个内存单元(因为整型量占2个单 元),假设3000和3001两个单元分配给变量x,3002和 3003分配给变量y,3004,3005分配给变量z。如图5-1 所示。其中每个变量占用的内存单元的首地址即为该 变量的地址。如变量x的地址为3000,y的地址为3002, z的地址为3004。 执行语句 x = 58;首先是根据变量名与地址的对应 关系,找到变量x的地址3000,然后将数据58存储到从 由3000开始的两个字节中。同理,y = 32语句的执行将 数据32存储到从由3002开始的两个字节中。显然58、 32则分别为变量x和y所对应的内容
soON B中 声导 Return
[Return]
地址和指针的概念 内存区的每一个字节有一个编号,这就是“地址” 如果在程序中定义了一个变量,在对程序进行编译时 系统就会给这个变量分配内存单元 直接访问与间接访问(例如找人) 1.按变量地址存取变量值的方式称为“直接访问”方式 pri n t f("%d", i) s ca nf(o d",&i) k=i十j;
地址和指针的概念 内存区的每一个字节有一个编号,这就是“地址” 。 如果在程序中定义了一个变量,在对程序进行编译时, 系统就会给这个变量分配内存单元。 直接访问与间接访问(例如找人) 1.按变量地址存取变量值的方式称为“直接访问”方式 printf(″%d″,i); scanf(″%d″,&i); k=i+j;
内存用户数据区 2000 变量i 2002 变量j 2004 变量k 3010 2000 变量i_ pointer
2.另一种存取变量值的方式称为“间接访问”的方式 即,将变量i的地址存放在另一个变量中(用存储在 一个变量中的地址去访问这个地址所指示的内存单元 的方式) 在C语言中,指针是一种特殊的变量,它是存放地址的。例 如上图中,整型变量i的内容为3,占用了从地址2000开始的 两个连续存储单元。偎设又定义了一个变量 I pointer,假若 I pointer的值为200,也就是说, 1 pointer的内容为x的地址 我们专门定义了一个变量 1 pointer用来存放另一个变量的地 址,以后如果我们要访问变量i内容,可以不通过道接访问, 而是通过变量 1 pointer,用变量 1 pointer内的地址间接地去访 问变量i,这种访问方式就称为间接访问
2. 另一种存取变量值的方式称为“间接访问”的方式。 即,将变量i的地址存放在另一个变量中(用存储在 一个变量中的地址去访问这个地址所指示的内存单元 的方式) 。 在C语言中,指针是一种特殊的变量,它是存放地址的。例 如上图中,整型变量i的内容为3,占用了从地址2000开始的 两个连续存储单元。假设又定义了一个变量i_pointer ,假若 i_pointer的值为2000,也就是说, i_pointer的内容为x的地址。 我们专门定义了一个变量i_pointer用来存放另一个变量的地 址,以后如果我们要访问变量i的内容,可以不通过i直接访问, 而是通过变量i_pointer,用变量i_pointer内的地址间接地去访 问变量i ,这种访问方式就称为间接访问
指针和指针变量的定义: 个变量的地址称为该变量的“指针” 例如,地址2000是变量i的指针。在计算机中,地址 实际上也是数据(如3001,3002等),所以地址也可 以作为存储单元的内容存放在一个变量中,用来存放 指针数据的变量叫做指针变量。如果有一个变量专门 用来存放另一变量的地址(即指针),则它称为 “指针变量”。上述的 ointer就是一个指变 量。称 i pointer指向变量i,或说 i pointer是指向 变量iⅰ的指针
一个变量的地址称为该变量的“指针”。 例如,地址2000是变量i的指针。在计算机中,地址 实际上也是数据(如3001,3002等),所以地址也可 以作为存储单元的内容存放在一个变量中,用来存放 指针数据的变量叫做指针变量。如果有一个变量专门 用来存放另一变量的地址(即指针),则它称为 “指针变量”。上述的i_pointer就是一个指针变 量。称i_pointer指向变量i,或说i_pointer是指向 变量i的指针。 指针和指针变量的定义:
指针简介21 变量 int x int ptr x 10 ED53 指针 地址 ED53 内存 数据 指针ptrx指向变量x
指针简介 2-1 内存 10 int x 地址 ED53 变量 数据 ED53 int ptr_x 指针 指针 ptr_x 指向变量 x