清华大学出版社 TSINGHUA UNIVERSITY PRESS 第十章 指针
第十章
清华大学出版社 TSINGHUA UNIVERSITY PRESS §101地址和指针的概念 为了说清楚什么是指针,必须弄清楚数据在内存中是 如何存储的,又是如何读取的。 内存区的每一个字节有一个编号,这就是“地址” 如果在程序中定义了一个变量,在对程序进行编译时 系统就会给这个变量分配内存单元。 按变量地址存取变量值的方式称为“直接访问”方式 例如: pri n tf("%d",i) s canf(" d",&i) k=i+j
§10.1地址和指针的概念 为了说清楚什么是指针,必须弄清楚数据在内存中是 如何存储的,又是如何读取的。 内存区的每一个字节有一个编号,这就是“地址” 。 如果在程序中定义了一个变量,在对程序进行编译时, 系统就会给这个变量分配内存单元。 1、按变量地址存取变量值的方式称为“直接访问”方式 printf(″%d″,i); scanf(″%d″,&i); k=i+j; 例如:
清华大学斯 内存用户数据区 2000 变量i 2002 :369 变量 2004 变量k 2000 变量 pointer
清华大学出版社 另一种存取变量值的方式称为“间接访苘”的方式 即,将变量i的地址存放在另一个变量中 在C语言中,指针是一种特殊的变量,它是存放地址的。 假设我们定义了一个指针变量 i pointer用来存放整型变 量的地址,它被分配地址为(3010)、(3011)的两个字节。 可以通过语句: i pointer=& 将i的地址(2000)存放到 I pointer中。这时, i pointer 的值就是(2000,即变量i所占用单元的起始地址。要 存取变量i的值,可以采用间接方式:先找到存放 的地址”的变量 i pointer,从中取出i的地址(2000 然后到2000、2001字节取出i的值(3)
另一种存取变量值的方式称为“间接访问”的方式。 即,将变量i的地址存放在另一个变量中。 在C语言中,指针是一种特殊的变量,它是存放地址的。 假设我们定义了一个指针变量i_pointer用来存放整型变 量的地址,它被分配地址为(3010)、(3011)的两个字节。 可以通过语句:i_pointer =&i; 将i的地址(2000)存放到i_pointer中。这时, i_pointer 的值就是(2000) ,即变量i所占用单元的起始地址。要 存取变量i的值,可以采用间接方式:先找到存放“i 的地址”的变量i_pointer ,从中取出i的地址(2000), 然后到2000 、 2001字节取出i的值(3)
清华大学出版社 TSINGHUA UNIVERSITY PRESS 2000 a pointer 2000 2000 (b)