第八章 指针
C 程序设计中使用指针可以 :
使程序简洁、紧凑、高效
有效地表示复杂的数据结构
动态分配内存
得到多于一个的函数返回值
§
8.1 指针的概念
变量与地址
程序中 : int i;
float k;
内存中每个字节有一个编号 ----- 地址
…...
…...
2000
2001
2002
2005
内存
0
2003
i
k
编译或函数调用时为其分配内存单元
变量是对程序中数据
存储空间的抽象
…...
…...
2000
2004
2006
2005
整型变量 i
10
变量 i_pointer
2001
2002
2003
指针与指针变量
指针:一个变量的地址
指针变量:专门存放变量地址的变量叫 ~
2000
指针
指针变量
变量的内容
变量的地址
指针变量
变量
变量地址 ( 指针 )
变量值
指向
地址存入
指针变量
& 与 * 运算符
含义
含义 : 取变量的地址
单目运算符
优先级 : 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
2004
2006
2005
整型变量 i
10
变量 i_pointer
2001
2002
2003
2000
3
例 *i_pointer=20; ----- 间接访问
20