设有指向整型变量的指针变量p,如要把整型变量a的地址 赋予p可以有以下两种方式: (1)指针变量初始化的方法: int p=&a (2)赋值语句的方法: int a,"p, p=&a;
11 (1)指针变量初始化的方法: int a; int *p=&a; 设有指向整型变量的指针变量p,如要把整型变量a 的地址 赋予p可以有以下两种方式: (2)赋值语句的方法: int a, *p; p=&a;
指针变量的运算(引用) ■指针变量可以进行某些运算,但其运算的种类是有限的, 只能进行赋值运算和部分算术运算及关系运算。 1.指针运算符 (1)取地址运算符& 单目运算符,其结合性为自右至左,其功能是取变量的地 址。例:&a即取变量a的地址 (2)取内容运算符 单目运算符,其结合性为自右至左,其功能是用来表示指 针变量所指的变量 ■在*运算符之后跟的变量必须是指针变量
12 指针变量可以进行某些运算,但其运算的种类是有限的, 只能进行赋值运算和部分算术运算及关系运算。 1. 指针运算符 (1)取地址运算符& 单目运算符,其结合性为自右至左,其功能是取变量的地 址。 例:&a 即取变量a的地址 (2)取内容运算符* 单目运算符,其结合性为自右至左,其功能是用来表示指 针变量所指的变量。 在*运算符之后跟的变量必须是指针变量。 指针变量的运算(引用)
两个*的意义 例: void maino 相同么? i int a=5, *p=&a; printf (%d",p); 注意: ■指针运算符和指针变量说明中的指针说明符意义是不 相同。 ■在指针变量说明中,是类型说明符,表示其后的变量是 指针类型。 表达式中出现的则是一个运算符用以表示指针变量所指 的变量
13 例:void main() { int a=5,*p=&a; printf ("%d",*p); } 注意: 指针运算符*和指针变量说明中的指针说明符* 意义是不 相同。 在指针变量说明中,*是类型说明符,表示其后的变量是 指针类型。 表达式中出现的*则是一个运算符用以表示指针变量所指 的变量。 两个*的意义 相同么?
说明: 若有定义:inta,*p=&a (1)&*p表示:p(a的地址) (2) *&a 表示:a (3)(*p)++相当于a++ (4)“p++相当于*(p++),即先取p所指向变量的值, 然后,让p指向下一个存储单元。 (5)*+十p相当于*(++p)即先让p指向下一个存储 单元,然后再取p所指向变量的值
14 若有定义: int a, *p=&a (1) &*p 表示:p (a的地址) (2) *&a 表示: a (3) (*p)++ 相当于 a++ (4) *p++ 相当于 *(p++),即先取p所指向变量的值, 然后,让p指向下一个存储单元。 (5) *++p 相当于 *(++p) 即先让p指向下一个存储 单元,然后再取p所指向变量的值。 说明:
2.赋值运算 指针变量的赋值运算有以下几种形式: ①指针变量初始化赋值,前面已作介绍。 ②把一个变量的地址赋予指向相同数据类型的指针变量。 例如:inta,*pa; pa=&a;γ把整型变量a的地址赋予整型指针变量pa*/ ③把一个指针变量的值赋予指向相同数据类型变量的另一个 指针变量
15 指针变量的赋值运算有以下几种形式: ①指针变量初始化赋值,前面已作介绍。 ②把一个变量的地址赋予指向相同数据类型的指针变量。 例如:int a,*pa; pa=&a; /*把整型变量a的地址赋予整型指针变量pa*/ ③把一个指针变量的值赋予指向相同数据类型变量的另一个 指针变量。 2. 赋值运算