◎口由于指针值是教据,指针变量可以赋值,所以 个指针的指向在程序执行中可以改变。指针P在 执行中某时刻指向变量x,在另一时刻也可以指 向变量yo 口指针变量px与它所指向的整型变量x的关系 用指针运算符“*表示为:*px(等价于变量x) px 变量x X 2000 3 &x p X px=3; 16 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 16 ❑由于指针值是数据,指针变量可以赋值,所以一 个指针的指向在程序执行中可以改变。指针p 在 执行中某时刻指向变量x,在另一时刻也可以指 向变量y。 ❑指针变量px与它所指向的整型变量x的关系 ✓用指针运算符“*”表示为:*px (等价于变量x) 3 变量x 2000 px *px x *px &x px x=3; *px=3;
下面四条语句的作用相同,都是将1赋给变量x: 1.x=100;/*将100直接赋给变量x*/ 2.*px=100;/*将100间接赋给变量x*/ 3.*(&x)=100;/*将100间接赋给变量x*/ 4.*(int*)10h)=100/*将100间接赋给变量x* (假设x的地址为100h) 17 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 17 下面四条语句的作用相同,都是将100赋给变量x: 1. x=100; /*将100直接赋给变量x*/ 2. *px=100; /*将100间接赋给变量x*/ 3. *(&x)=100; /*将100间接赋给变量x*/ 4. *((int *)100h)=100 /*将100间接赋给变量x*/ (假设x的地址为100h)
4、指针变量的长度 指针变量的长度可以是2个字节或4个字节, 这取决于引用者和被引用者之间在内存的距离, 通常由系统自动决定,程序员不必理会。(下 述内容在学习汇编语言后更好理解,目前可暂 不关注。) 编译系统根据设定的内存模式来安排代码段 和数据段,由此确定指针变量的长度。内存模 式取决于代码段和数据段的长度,早期的C系统 将内存模式分为六种,如P202表7-1所示。 18 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 18 指针变量的长度可以是2个字节或4个字节, 这取决于引用者和被引用者之间在内存的距离, 通常由系统自动决定,程序员不必理会。(下 述内容在学习汇编语言后更好理解,目前可暂 不关注。) 编译系统根据设定的内存模式来安排代码段 和数据段,由此确定指针变量的长度。内存模 式取决于代码段和数据段的长度,早期的C系统 将内存模式分为六种,如P202 表7-1所示。 4、指针变量的长度
側72指针变量的定义与赋值 般形式:[存储类型数据类型符变量名初始值 例 int pl,p2; 指针变 float“q; 识符 static char*name; 注意: int *p1, *p2; 5 int *p1, p2 指针变量名是p1p2,不是*1,p2 指针变量只能指向定义时所规定类型的变量 指针变量定义后,变量值不确定,应用前必须先赋值 19 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 19 一般形式: [存储类型] 数据类型符 *变量名[=初始值]; 表示定义指针变量合法标识符 不是‘*’运算符 指针变量本身的存储类型 指针的目标变量的数据类型 注意: ➢ int *p1, *p2; 与 int *p1, p2; ➢ 指针变量名是p1,p2 ,不是*p1,*p2 ➢ 指针变量只能指向定义时所规定类型的变量 ➢ 指针变量定义后,变量值不确定,应用前必须先赋值 例 int *p1, *p2; float *q; static char *name; 7.2 指针变量的定义与赋值
721指针变量的定义 例如: inta=1/定义整型变量* int*p;/定义指向整型变量的指针变量 则指时的∠地址那荛指变量 上面的三个语句也可以简化为 int a=1: int * p=&a 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 20 例如: int a=1 /*定义整型变量 */ int *p; /*定义指向整型变量的指针变量 */ p=&a; /*把int变量a的首地址赋予该指针变量, 对指针的另一个含义“地址值”进行补充。*/ 7.2.1 指针变量的定义 上面的三个语句也可以简化为 int a=1; int *p=&a;