《C++大学教程》2007.9 第7章间接访问一指针 指针的概念 指针运算与数组 指针作为函数参数和返回值 动态内存分配 水 字符串再讨论 指针数组与多级指针 指向多维数组的指针 指向函数的指针
《C++大学教程》 2007.9 v 指针的概念 v 指针运算与数组 v 指针作为函数参数和返回值 v 动态内存分配 v 字符串再讨论 v 指针数组与多级指针 v 指向多维数组的指针 v 指向函数的指针
指针介绍 《C++大学教程》2007.9 今天我们介绍C+语言最主要的特性:指针,为了成 为一个优秀的C语言程序员,你必须掌握指针并熟 练地使用它们。 指针 ·是内存的地址并可作为数据 •是一个灵活和危险的机制 ·允许共享处理数据 •允许内存动态分配(只要需要,而非预先定义)
《C++大学教程》 2007.9 今天我们介绍C++语言最主要的特性:指针,为了成 为一个优秀的C语言程序员,你必须掌握指针并熟 练地使用它们。 指针 •是内存的地址并可作为数据 •是一个灵活和危险的机制 •允许共享处理数据 •允许内存动态分配(只要需要,而非预先定义)
《C++大学教程》2007.9 指针的概念 指针就是把地址作 如在某一程序 为数据,可以把地 中定义了 址存储在内存中 int x; 2 1000 指针变量:存储地 X=2; 址的变量 如系统给x分 配的空间是 变量的指针:当一 1000号单元, 个变量存储另一个 则指向x的指 1000 变量的地址时,那 针是另一个变 我们说它就是那个 量,该变量中 变量的指针 存放的数据为 1000
《C++大学教程》 2007.9 v 指针就是把地址作 为数据,可以把地 址存储在内存中 v 指针变量:存储地 址的变量 v 变量的指针:当一 个变量存储另一个 变量的地址时,那 我们说它就是那个 变量的指针 1000 2 1000 如在某一程序 中定义了 int x; X=2; 如系统给x分 配的空间是 1000号单元, 则指向x的指 针是另一个变 量,该变量中 存放的数据为 1000
关于指针的几个问题 +大学教程》2007.9 如何定义一个变量是指针? 类型标识符 *指针变量; 如:int*intp; double *doublep 如何把某一变量的地址置入一个指针变量中?因为我们不 知道系统分配给变量的真正地址是什么。 > 用地址运算符“&”解决。如表达式“&x”返回的是变量× 的地址。如:intp=&x; > &运算符后面不能跟常量或表达式。如&2是没有意义的, &(m*n+p)。也是没有意义的 ~如何用指针变量处理和改变它所指向的单元的值? >用引用运算符“*”解决。如*intp表示的是intp指向的这 个单元的内容。 > 在对intp使用引用运算之前,必须先对intp赋值
《C++大学教程》 2007.9 v 如何定义一个变量是指针? 类型标识符 *指针变量; 如:int *intp; double *doublep v 如何把某一变量的地址置入一个指针变量中?因为我们不 知道系统分配给变量的真正地址是什么。 Ø 用地址运算符 “&” 解决。如表达式 “&x” 返回的是变量 x 的地址。如:intp = &x; Ø & 运算符后面不能跟常量或表达式。如 &2 是没有意义的, &(m * n + p )。也是没有意义的 v 如何用指针变量处理和改变它所指向的单元的值? Ø 用引用运算符 “*” 解决。如 *intp 表示的是 intp 指向的这 个单元的内容。 Ø 在对 intp 使用引用运算之前,必须先对 intp 赋值
《C++大学教程》2007.9 指针实例 如执行: 如有: *intp=Y+4; int X,*intp,Y; X=3; X 3 1000 Y=4; 4 1004 8 1000 intp=&X; Y 4 1004 intp 1000 intp 1000 注意:不能用 intp=100; 因为我们永远不知道变量存储的真实地址,而且 程序每次运行可能都不同
《C++大学教程》 2007.9 如有: int X, *intp, Y; X=3; Y=4; intp=&X; intp 1000 1004 Y 4 1000 X 3 如执行: *intp=Y+4; intp 1000 1004 Y 4 1000 X 8 注意:不能用 intp=100; 因为我们永远不知道变量存储的 真实地址,而且 程序每次运行可能都不同