指针变量的引用 ·程序中引用指针变量常用的方式有3种 1.给指针变量赋值 形式:指针变量=地址型表达式 作用:指针变量指向目标变量 例:给指针变量赋值 int i, al10], p p_|=&i p_|=a+6: p_|=a 注:a+6是&a[6] p i=&a[2] a+6xa+62(字节)
指针变量的引用 • 程序中引用指针变量常用的方式有3种 1. 给指针变量赋值 形式:指针变量=地址型表达式 作用:指针变量指向目标变量 • 例:给指针变量赋值 int i,a[10],*p_i; p_i=&i; p_i=a+6; p_i=a; 注:a+6是&a[6] p_i=&a[2]; a+6 a+6*2(字节)
2.直接使用指针变量名 ·需要用到地址时,可以直接引用指针变量名 例:直接使用指针变量名 float yl 10],p1=y, p2 p2=p1; scanf(%f,%f,p1,p2+6);/存入y0]y[6]*/ 3.通过指针变量来引用它所指向的变量 形式:大指针变量名
2. 直接使用指针变量名 • 需要用到地址时,可以直接引用指针变量名 • 例:直接使用指针变量名 float y[10],*p1=y,*p2; p2=p1; scanf(“%f,%f”,p1,p2+6);/* 存入y[0],y[6]*/ 3. 通过指针变量来引用它所指向的变量 • 形式:*指针变量名
例:利用“*指针变量”引用所指向的数据 float x1=126X2=20,x3,*p1=8x1,p3=&x3; char s[10]="abcd, *ps 1=S, *ps 2=S+4 p3=*p1*×2; ps2=*ps1+2; 地址运算* 解释: p3=*p1*×2;>X3=×1x2→X3=12.6×20 ps2=*ps1+2;xs[4]=+2xs[4]=S[2}→ S[4]=c
• 例:利用“*指针变量”引用所指向的数据 float x1=12.6,x2=2.0,x3,*p1=&x1,*p3=&x3; char s[10]=“abcd”,*ps1=s,*ps2=s+4; *p3=*p1*x2; *ps2=*ps1+2; /* 地址运算*/ 解释: *p3=*p1*x2; x3=x1*x2 x3=12.6×2.0 *ps2=*ps1+2; s[4]=s+2 s[4]=s[2] s[4]=‘c’
取地址运算符和指针运算符 ·“&”称为取地址运算符,运算结果是地址 “*”称为指针运算符,运算对象是地址 取地址运算符和指针运算符 名称对象数与位置运算符对象类型运算规则结果类型结合性 取单目前&任何类取运算地址 地缀 型的变对象的 址 量、数 组元素 地址 指单目前地址地址对变量或自右 针缀 应的变数组元向左 量或数素的类 组元素型
取地址运算符和指针运算符 • “&” 称为取地址运算符,运算结果是地址 • “ * ”称为指针运算符,运算对象是地址 取地址运算符和指针运算符 名称 对象数与位置 运算符 对象类型 运算规则 结果类型 结合性 取 地 址 单目前 缀 & 任何类 型的变 量、数 组元素 取运算 对象的 地址 地址 指 针 单目前 缀 * 地址 地址对 应的变 量或数 组元素 变量或 数组元 素的类 型 自右 向左
取地址运算符“&”的运算对象必须是已 定义过的变量或数组元素 例:取地址运算符的使用 int a, b[101: &a,&a[0],&b[9]正确 指针运算符“”的运算对象必须是地址 常用已赋值的指针变量,也可以是普通变 量的地址或数组元素的地址 运算结果是地址所对应的变量或数组元素
• 取地址运算符“&”的运算对象必须是已 定义过的变量或数组元素 • 例:取地址运算符的使用 int a,b[10]; &a,&a[0],&b[9] 正确 • 指针运算符“*”的运算对象必须是地址 • 常用已赋值的指针变量,也可以是普通变 量的地址或数组元素的地址 • 运算结果是地址所对应的变量或数组元素 等