指针 C程序设计中使用指针可以: ●使程序简洁、紧凑、高效 ●有效地表示复杂的数据结构 ●动态分配内存 ●得到多于一个的函数返回值
指针 C程序设计中使用指针可以: ⚫使程序简洁、紧凑、高效 ⚫有效地表示复杂的数据结构 ⚫动态分配内存 ⚫得到多于一个的函数返回值
§81指针的概念 ★变量与地址 内存中每个字节有一个编号-地址 内存 : 程序中:inti; : 2000 2001 float k; 2002 编译或函数调用时为其分配内存单元 2003 0 2005 变量是对程序中数据 存储空间的抽象
§8.1 指针的概念 变量与地址 程序中: int i; float k; 内存中每个字节有一个编号-地址 . . 2000 2001 2002 2005 内存 0 2003 i k 编译或函数调用时为其分配内存单元 变量是对程序中数据 存储空间的抽象
★指针与指针变量 冬指针:一个变量的地址 指针变量:专门存放变量地址的变量叫~ 指针 2000 整型变量i 2001 10 变量的地址 变量的内容 2002 2003 2004 ←一变量i pointer 3005 指针变量 变量地址(指针) 指向 地址存入 变量 指针变量 变量值
. . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 指针与指针变量 ❖指针:一个变量的地址 ❖指针变量:专门存放变量地址的变量叫~ 2000 指针 指针变量 变量的地址 变量的内容 指针变量 变量 变量地址(指针) 变量值 指向 地址存入 指针变量
★&与*运算符 合文养套行 置关取指勇嶷漫的内容 单目运算符 镥运算符) 1 pointer *i pointer 优先级理犹先级:2 结合性:自 1上人L上 &i pointer 2000 10 i : 2000 整型变量i 2001 10 i pointer &i=&(*i pointer) 2002 1 *i pointer *(&i) 2003 2004 ←一变量i pointer 2005 -2000 指针变量 2006 i pointer 指针变量,它的内容是地址量 *i pointer- 指针的目标变量,它的内容是数据 &i pointer 指针变量占用内存的地址
&与*运算符 ❖含义 含义: 取变量的地址 单目运算符 优先级: 2 结合性:自右向左 含义: 取指针所指向变量的内容 单目运算符 (指针运算符) 优先级: 2 结合性:自右向左 ❖两者关系:互为逆运算 ❖理解 . . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 指针变量 i_pointer-指针变量,它的内容是地址量 *i_pointer-指针的目标变量,它的内容是数据 &i_pointer-指针变量占用内存的地址 2000 10 i_pointer *i_pointer &i_pointer i i_pointer &i &(*i_pointer) i *i_pointer *(&i) i_pointer = &i = &(*i_pointer) i = *i_pointer = *(&i)
★直接访问与间接访问 令直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 例 i=3; 直接访问 2000 整型变量i 2001 20= 2002 2003 2004 ←一变量i pointer 2005 2000 指针变量 2006 例 *i pointer=20; -间接访问
直接访问与间接访问 ❖直接访问:按变量地址存取变量值 ❖间接访问:通过存放变量地址的变量去访问变量 例 i=3; -直接访问 指针变量 . . 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 3 例 *i_pointer=20; -间接访问 20