清华大学出版社 TSINGHUA UNIVERSITY PRESS “指针”。意思是通过它能找到以它为地址的内 存单元(例如根据地址2000就能找到变量的存储单 元,从而读取其中的值)。一个变量的地址称为该 变量的“指针”。例如,地址2000是变量的指针。 如果有一个变量专门用来存放另一变量的地址(即 指针),则它称为“指针变量”。上述的i-pointer 就是一个指针变量。指针变量的值(即指针变量中 存放的值)是指针(地址)。请区分“指针”和“指 针变量”这两个概念。例如,可以说变量的指针 是2000,而不能说的指针变量是2000
“指针”。意思是通过它能找到以它为地址的内 存单元(例如根据地址2000就能找到变量i的存储单 元,从而读取其中的值)。一个变量的地址称为该 变量的“指针”。例如,地址2000是变量i的指针。 如果有一个变量专门用来存放另一变量的地址(即 指针),则它称为“指针变量”。上述的i-pointer 就是一个指针变量。指针变量的值(即指针变量中 存放的值)是指针(地址)。请区分“指针”和“指 针变量”这两个概念。例如,可以说变量i的指针 是2000,而不能说i的指针变量是2000
清华大学出版社 TSINGHUA UNIVERSITY PRESS 10.2变量的指针和指向变量的指针变量 如前所述,变量的指针就是变量的地址。存放变量 地址的变量是指针变量,用来指向另一个变量。 为了表示指针变量和它所指向的变量之间的联系, 在程序中用“*”符号表示“指向”,例如,i pointer代表指针变量,而*i-pointer是i-pointer所 指向的变量,见图10.3。 pointer *i_pointer 2000 2000 图10.3
10.2 变量的指针和指向变量的指针变量 如前所述,变量的指针就是变量的地址。存放变量 地址的变量是指针变量,用来指向另一个变量。 为了表示指针变量和它所指向的变量之间的联系, 在程序中用“*”符号表示“指向”,例如,ipointer代表指针变量,而*i-pointer是i-pointer所 指向的变量,见图10.3。 图10.3
清华大学出版社 TSINGHUA UNIVERSITY PRESS 可以看到,*i-pointer也代表一个变量,它和变量是 同一回事。下面两个语句作用相同: ①i=3; ②*i-pointer=-3; 第②个语句的含意是将3赋给指针变量i-pointer)所指 向的变量。 10.2.1定义一个指针变量 C语言规定所有变量在使用前必须定义,指定其类型, 并按此分配内存单元。指针变量不同于整型变量和 其他类型的变量,它是用来专门存放地址的。必须 将它定义为“指针类型”。先看一个具体例子:
可以看到,*i-pointer也代表一个变量,它和变量i是 同一回事。下面两个语句作用相同: ① i=3; ② *i-pointer=3; 第②个语句的含意是将3赋给指针变量i-pointer所指 向的变量。 10.2.1 定义一个指针变量 C语言规定所有变量在使用前必须定义,指定其类型, 并按此分配内存单元。指针变量不同于整型变量和 其他类型的变量,它是用来专门存放地址的。必须 将它定义为“指针类型”。先看一个具体例子:
清华大学出版社 TSINGHUA UNIVERSITY PRESS int i,j; int *pointer_1,*pointer_2; 第1行定义了两个整型变量和j,第2行定义了两个指 针变量:pointer1和pointer2,它们是指向整型 变量的指针变量。左端的int是在定义指针变量时 必须指定的“基类型”。指针变量的基类型用来 指定该指针变量可以指向的变量的类型。例如, 上面定义的指针变量pointer1和pointer2可以用 来指向整型变量和j,但不能指向实型变量a和B。 定义指针变量的一般形式为基类型*指针变量名下面 都是合法的定义:
int i,j; int *pointer_1, *pointer_2; 第1行定义了两个整型变量i和j,第2行定义了两个指 针变量:pointer_1和pointer_2,它们是指向整型 变量的指针变量。左端的int是在定义指针变量时 必须指定的“基类型”。 指针变量的基类型用来 指定该指针变量可以指向的变量的类型。例如, 上面定义的指针变量pointer_1和pointer_2可以用 来指向整型变量i和j,但不能指向实型变量a和B。 定义指针变量的一般形式为基类型*指针变量名下面 都是合法的定义:
清华大学出版社 TSINGHUA UNIVERSITY PRESS float*pointer_.3;pointer-3是指向实型变量的指针变 量) char*pointer_4;(pointer-4是指向字符型变量的指 针变量) 那么,怎样使一个指针变量指向另一个变量呢?下 面用赋值语句使一个指针变量指向一个整型变量: pointer 1=&i; pointer_2=&j; 将变量的地址存放到指针变量pointer1中,因此 pointer 1就“指向”了变量i
float*pointer_3;(pointer-3是指向实型变量的指针变 量) char*pointer_4; (pointer-4是指向字符型变量的指 针变量) 那么,怎样使一个指针变量指向另一个变量呢?下 面用赋值语句使一个指针变量指向一个整型变量: pointer_1=&i; pointer_2=&j; 将变量i的地址存放到指针变量pointer_1中,因此 pointer_1就“指向”了变量i