第8章指针 第8章指针 8.,1指针的概念 8.2指针变量的定义与引用 3指针运算 8.4指针和数组 8.5指针与字符串 8.6指针数组和指向指针的指针 8.7指针与内存的动态分配 8.8指针与数组作为函数的参数 8.9带参数的main函数 8.10返回指针值的函数 8.11函数指针的定义与引用 8.12本章小结 Ba
第8章 指针 第8章 指针 8.1 指针的概念 8.2 指针变量的定义与引用 8.3 指针运算 8.4 指针和数组 8.5 指针与字符串 8.6 指针数组和指向指针的指针 8.7 指针与内存的动态分配 8.8 指针与数组作为函数的参数 8.9 带参数的main 函数 8.10 返回指针值的函数 8.11 函数指针的定义与引用 8.12 本章小结
第8章指针 81指针的概念 8.1.1变量的地址与变量的内容 计算机为了方便管理内存,为每一个内存单元都 编了号,这个编号称为内存单元的地址。一般把存储 器中的一个字节称为一个内存单元(亦称存储单元),变 量的地址与变量的内容是两个不同的概念。变量在内 存中所占存储空间的首地址就称为变量的地址。而变 量在内存所占的内存单元中存放的数据就称为变量的 内容 Ba
第8章 指针 8.1 指针的概念 8.1.1 变量的地址与变量的内容 计算机为了方便管理内存,为每一个内存单元都 编了号,这个编号称为内存单元的地址。一般把存储 器中的一个字节称为一个内存单元(亦称存储单元),变 量的地址与变量的内容是两个不同的概念。变量在内 存中所占存储空间的首地址就称为变量的地址。而变 量在内存所占的内存单元中存放的数据就称为变量的 内容
第8章指针 8.12直接访问与间接访问 变量值的存取都是通过地址进行的,例如: printf(%od",&i)的执行是这样的。先找到变量i的地址 200,然后从200开始的两个字节中取出数据(假若变 量i的值为5)把它输出。这种按变量地址存取变量的 方式称为直接访问方式。还可以采用另一种称为间接 访问方式,将变量地址存放在另一个变量中。假设 个变量p,用来存放变量i的地址,它被分配为300, 301两个单元。将i的地址存放到p中,要存取变量i的 值,先找到存放i地址的变量p,从p中取出i的地址 (200),然后到200,201中取出i的值5。 Ba
第8章 指针 8.1.2 直接访问与间接访问 变量值的存取都是通过地址进行的, 例如: priintf(“%d”,&i)的执行是这样的。先找到变量i的地址 200,然后从200开始的两个字节中取出数据(假若变 量i的值为5)把它输出。这种按变量地址存取变量的 方式称为直接访问方式。还可以采用另一种称为间接 访问方式,将变量i的地址存放在另一个变量中。假设 一个变量p,用来存放变量i的地址,它被分配为300, 301两个单元。将i的地址存放到p中,要存取变量i的 值,先找到存放i地址的变量p,从p中取出i的地址 (200),然后到200,201中取出i的值5
第8章指针 8.1.3指针与指针变量 对于一个内存单元来说,单元的地址即为指针, 其中存放的数据是该单元的内容。在C语言中,允许用 个变量来存放指针,这种变量称为指针变量。因此, 个指针变量的值就是某个内存单元的地址,或称为 某内存单元的指针。 Ba
第8章 指针 8.1.3 指针与指针变量 对于一个内存单元来说,单元的地址即为指针, 其中存放的数据是该单元的内容。在C语言中,允许用 一个变量来存放指针,这种变量称为指针变量。因此, 一个指针变量的值就是某个内存单元的地址,或称为 某内存单元的指针
第8章指针 Ooh K” O110H(地址) 图8.1指向变量C的指针变量P Ba
第8章 指针 图8.1 指向变量C的指针变量P 0110H “K” P C 0110H(地 址 )
第8章指针 如图8-1所示,设有字符变量C,其内容为K (ASCI码为十进制数75),C占用了0110H号单元(地址 用十六进制表示)。当有指针变量P,内容为0110H时 我们称为“P指向变量C〃或者“P是指向变量C的指 针 严格地说,一个指针是一个地址,是一个常量, 而一个指针变量却可以被赋予不同的指针值,是变量 但通常把指针变量简称为“指针”。为了避免混淆, 我们约定:“指针”是指地址,是常量,“指针变量” 是指取值为地址的变量。定义指针的目的是为了通过 指针去访问内存单元。 Ba
第8章 指针 如 图 8-1 所 示 ,设 有字 符 变量 C , 其内 容为 K (ASCII码为十进制数75),C占用了0110H号单元(地址 用十六进制表示)。当有指针变量P,内容为0110H时, 我们称为“P指向变量C”或者“P是指向变量C的指 针” 。 严格地说,一个指针是一个地址,是一个常量, 而一个指针变量却可以被赋予不同的指针值,是变量。 但通常把指针变量简称为“指针” 。为了避免混淆, 我们约定: “指针”是指地址,是常量, “指针变量” 是指取值为地址的变量。定义指针的目的是为了通过 指针去访问内存单元
第8章指针 既然指针变量的值是一个地址,那么这个地址不 仅可以是变量的地址,而且也可以是其他数据结构的 地址。在一个指针变量中存放一个数组或一个函数的 首地址有何意义呢?因为数组或函数都是连续存放的 所以通过访问指针变量取得了数组或函数的首地址 也就找到了该数组或函数。这样一来,凡是出现数组、 函数的地方都可以用一个指针变量来表示,只要该指 针变量中赋予数组或函数的首地址即可。这样做,将 会使程序的概念十分清楚,程序本身也精练、髙效 Ba
第8章 指针 既然指针变量的值是一个地址,那么这个地址不 仅可以是变量的地址,而且也可以是其他数据结构的 地址。在一个指针变量中存放一个数组或一个函数的 首地址有何意义呢?因为数组或函数都是连续存放的, 所以通过访问指针变量取得了数组或函数的首地址, 也就找到了该数组或函数。这样一来,凡是出现数组、 函数的地方都可以用一个指针变量来表示,只要该指 针变量中赋予数组或函数的首地址即可。这样做,将 会使程序的概念十分清楚,程序本身也精练、高效
第8章指针 在C语言中,一种数据类型或数据结构往往都占 有一组连续的内存单元。用“地址”这个概念并不能 很好地描述一种数据类型或数据结构,而“指针”虽 然实际上也是一个地址,但它却是一个数据结构的首 地址,它是“指向”一个数据结构的,因而概念更为 清楚,表示更为明确。这也是引入“指针”概念的 个重要原因 Ba
第8章 指针 在C语言中,一种数据类型或数据结构往往都占 有一组连续的内存单元。用“地址”这个概念并不能 很好地描述一种数据类型或数据结构,而“指针”虽 然实际上也是一个地址,但它却是一个数据结构的首 地址,它是“指向”一个数据结构的,因而概念更为 清楚,表示更为明确。这也是引入“指针”概念的一 个重要原因
第8章指针 82指针变量的定义与引用 82.1指针变量的定义 指针变量定义的一般形式为 类型说明符*指针变量名; 其中,*为说明符,表示这是一个指针变量;指针 变量名为用户自定义标识符;类型说明符表示该指针 变量所指向的变量的数据类型。 Ba
第8章 指针 8.2 指针变量的定义与引用 8.2.1 指针变量的定义 指针变量定义的一般形式为 类型说明符 *指针变量名; 其中, *为说明符,表示这是一个指针变量;指针 变量名为用户自定义标识符;类型说明符表示该指针 变量所指向的变量的数据类型
第8章指针 例如: int * pl 该定义表示pl是一个指针变量,它的值是某个整 型变量的地址,或者说p1指向一个整型变量。至于pl 究竟指向哪一个整型变量,应由向pl赋予的地址来决 定。对于指针变量的类型说明应包括以下三个方面的 内容: (1)指针类型说明,即定义变量为一个指针变量 (2)指针变量名。 (3)变量值,即指针变量所指向变量的地址 Ba
第8章 指针 例如: int *p1; 该定义表示p1是一个指针变量,它的值是某个整 型变量的地址,或者说p1指向一个整型变量。至于p1 究竟指向哪一个整型变量,应由向p1赋予的地址来决 定。对于指针变量的类型说明应包括以下三个方面的 内容: (1) 指针类型说明,即定义变量为一个指针变量。 (2) 指针变量名。 (3) 变量值,即指针变量所指向变量的地址