第3章指针 本章介绍C语言程序设计的基本方法和 基本的程序语句。使读者对C程序有一个 初步的认识,为后面各章的学习打下基础。 5,1指针的概念 5.,2指针变量的定义与引用 5.3指针变量的运算 5.4指针与数组 5.5指针与字符串 5.6指针数组与指向指针的指针
第3章 指针 本章介绍C语言程序设计的基本方法和 基本的程序语句。使读者对C程序有一个 初步的认识, 为后面各章的学习打下基础。 5.1 指针的概念 5.2 指针变量的定义与引用 5.3 指针变量的运算 5.4 指针与数组 5.5指针与字符串 5.6 指针数组与指向指针的指针
51指针的概念 511变量的地址与变量的内容 不同类型的数据所占用的内存单元个数不等,如实型量占 4个单元,整型量占2个单元,字符型量占1个单元等。为了方 便对这些内存单元访间,每一个内存单元都有一个编号,根 据内存单元的编号即可准确地找到该内存单元,这个编号就 内存单元的地址。内存单元中存放的数据即为内存单元中 内容。 在程序中定义变量时,系统会自动按变量的类型为其分配 定长度的内存单元。 0000 0001 假设在程序中有如下语句: Int x,y,Z 300058 3001 X=58 00232 3003 xyz 32 3004 300 z三y 图5-1
5.1 指针的概念 5.1.1 变量的地址与变量的内容 不同类型的数据所占用的内存单元个数不等,如实型量占 4个单元,整型量占2个单元,字符型量占1个单元等。为了方 便对这些内存单元访问,每一个内存单元都有一个编号,根 据内存单元的编号即可准确地找到该内存单元,这个编号就 是内存单元的地址。内存单元中存放的数据即为内存单元中 的内容。 在程序中定义变量时,系统会自动按变量的类型为其分配 一定长度的内存单元。 假设在程序中有如下语句: int x,y,z; x = 58 y = 32 z = x + y
5.12直接访问与间接访问 所谓直接访问是指按变量名或地址来存取变量的 方式。 例如,对上例中的语句z=x+y;它的执行是 先从变量x的地址3000开始的两个单元中取出x的 内容,再从变量y的地址3002开始的两个单元中取 出y的内容,将它们相加后再送到变量z的地址 3004开始的两个单元中 既然根据内存单元的地址就可以找到所需的内存 单元,所以通常把地址形象地称为指针。可以通 过指针存取该单元中的数据 所谓间接访问是指用存储在一个变量中的地址去 访问这个地址所指示的内存单元的方式
5.1.2 直接访问与间接访问 所谓直接访问是指按变量名或地址来存取变量的 方式。 例如,对上例中的语句z = x + y;它的执行是 先从变量x的地址3000开始的两个单元中取出x的 内容,再从变量y的地址3002开始的两个单元中取 出y的内容,将它们相加后再送到变量z的地址 3004开始的两个单元中。 既然根据内存单元的地址就可以找到所需的内存 单元,所以通常把地址形象地称为指针。可以通 过指针存取该单元中的数据。 所谓间接访问是指用存储在一个变量中的地址去 访问这个地址所指示的内存单元的方式
在计算机中,地址实际上也是数据(如3001, 3002等),所以地址也可以作为存储单元的内容存 放在一个变量中,用来存放指针数据的变量叫做指 针变量。一个指针变量的值就是某个内存单元的地 址或称为某内存单元的指针。 例如图5-1中,变量x的内容为58,占用了从地 址3000开始的两个连续存储单元。假设又定义了 个变量P,假若P的值为3000,也就是说,P的内容 为x的地址。如图5-2所示。 我们专门定义了一个变量p用来存放另一个变量 的地址,以后如果我们要访问变量x的内容,可以 不通过x直接访问,而是通过通过变量p,用变量p 内的地址间接地去访问变量x,这种访问方式就称 为间接访问
在计算机中,地址实际上也是数据(如3001, 3002等),所以地址也可以作为存储单元的内容存 放在一个变量中,用来存放指针数据的变量叫做指 针变量。一个指针变量的值就是某个内存单元的地 址或称为某内存单元的指针。 例如图5-1中,变量x的内容为58,占用了从地 址3000开始的两个连续存储单元。假设又定义了一 个变量P,假若P的值为3000,也就是说,P的内容 为x的地址。如图5-2所示。 我们专门定义了一个变量p用来存放另一个变量 的地址,以后如果我们要访问变量x的内容,可以 不通过x直接访问,而是通过通过变量p,用变量p 内的地址间接地去访问变量x,这种访问方式就称 为间接访问
5.13指针与指针变量 综前所述,对内存单元的访问是通过地址来实现的。 在C语言中把地址形象地称为指针。变量对应的地址 称为变量的指针。例如,在图5-1中,变量x的指针 为3000,变量y的指针为3002。 严格地说,指针为地址,是常量。而指针变量却可 以被赋予不同的指针值,是变量。但常把指针变量 简称为指针。为了避免混淆,我们中约定:“指针” 是指地址,是常量,“指针变量”是指取值为地址 的变量。 定义指针的目的是为了通过指针去访问内存单元
5.1.3 指针与指针变量 综前所述,对内存单元的访问是通过地址来实现的。 在C语言中把地址形象地称为指针。变量对应的地址 称为变量的指针。例如,在图5-1中,变量x的指针 为3000,变量y的指针为3002。 严格地说,指针为地址,是常量。而指针变量却可 以被赋予不同的指针值,是变量。但常把指针变量 简称为指针。为了避免混淆,我们中约定:“指针” 是指地址,是常量, “指针变量”是指取值为地址 的变量。 定义指针的目的是为了通过指针去访问内存单元