例:int冲p,a={1,,3,4}; p=&a[0; p+=3: printf(“%d”,p);运行的结果:4 若&a[0=1022,则最后p的值:p102243×2=1028 总结:p士n表示实际的地址是: p±n× sizeof(所指向变量的类型) C++程序设计课件设计制作:徐龙琴 16
C++程序设计课件 设计制作:徐龙琴 16 例: int *p,a[]={1,2,3,4}; p=&a[0]; p+=3; printf(“%d”,*p); 运行的结果: 若&a[0] =1022,则最后p的值: p±n ×sizeof(所指向变量的类型) p=1022+3×2=1028 4 总结:p±n表示实际的地址是:
例: # include≤ iostream. h> void maino i double a[10; 程序运行结果如下: double * iptr=&a[0; al0)0x0012FF300 for(int i=0; i<5; i++) 「10x0012FF382.5 al[=i*2.5; a2]0x0012FF405 a3]0x0012FF487.5 for(int j=0;j<5;j ++ a|40x0012FF5010 f cout<<al"<<j<"w<<iptr<<'w<<*iptr<<end; iptr++; J C++程序设计课件设计制作:徐龙琴 17
C++程序设计课件 设计制作:徐龙琴 17 例: #include <iostream.h> void main() { double a[10]; double *iptr=&a[0]; for(int i=0;i<5;i++) a[i]=i*2.5; for(int j=0;j<5;j++) { cout<<"a["<<j<<"] "<<iptr<<" "<<*iptr<<endl; iptr++; } } 程序运行结果如下: a[0] 0x0012FF30 0 a[1] 0x0012FF38 2.5 a[2] 0x0012FF40 5 a[3] 0x0012FF48 7.5 a[4] 0x0012FF50 10
(2)关系运算:相同类型的两指针,指向后方的指针大于指向前 方的指针,指针的内容为0时我们称为空指针(p==0 (3赋值运算 ①把变量的地址赋给相同目标类型的指针 例: char c,p; p=& ②把一个指针的值赋给相同目标类型的另一指针 例:char*p1p2=&b; 2: pI-p ③把数组地址赋给相同目标类型的另一指针 例: char a[10,p: p=a, C++程序设计课件设计制作:徐龙琴 18
C++程序设计课件 设计制作:徐龙琴 18 ⑵关系运算:相同类型的两指针,指向后方的指针大于指向前 方的指针,指针的内容为0时我们称为空指针(p==0) 例:char c,*p; p=&c; ① 把变量的地址赋给相同目标类型的指针 ② 把一个指针的值赋给相同目标类型的另一指针 例:char *p1,*p2=&b; p1=p2; ③ 把数组地址赋给相同目标类型的另一指针 例:char a[10],*p; p= a; ⑶赋值运算
◇对指针变量进行*、艹+、--混合运算的理解: ①若:inta4}={1,2,34,5},“q=a; 则:*q++:等价于*(q+)。它先得到*q,然后再使q自增1, (*q)++:表示q所指向的元素值加1 ②若:p当前指向a数组的第i个元素,则: ▲*(p+)或*十+相当于a[i++],先对p进行*运算,再使p自增1 ▲*(++p)或*p相当于a[++订],先使p自增1,再对p进行*运算 ▲*(p--)或*p-一相当于a[i--],p先进行*运算,p再自减1 ▲*(-p)或*p相当于a[--i],p先自减1,p再进行*运算 C++程序设计课件设计制作:徐龙琴 19
C++程序设计课件 设计制作:徐龙琴 19 ◇对指针变量进行*、++、- -混合运算的理解: ① 若:int a[4]={1,2,34,5},*q=a; 则:*q++:等价于*(q++)。它先得到*q,然后再使q自增1, (*q)++:表示q所指向的元素值加1 ▲*(p++)或*p++相当于a[i++],先对p进行*运算,再使p自增1 ▲*(++p)或*++p相当于a[++i],先使p自增1,再对p进行*运算 ▲*(p- -)或*p- -相当于a[i- -],p先进行*运算,p再自减1 ▲*(- -p)或*- -p相当于a[- -i],p先自减1,p再进行*运算 ② 若:p当前指向a数组的第i个元素,则:
§8.2void指针和 const指针 1.void(空)指针:是一种不确定类型的指针,它可以指向任 何类型的变量。其语法格式为: void指针变量; ◆指针变量:不指向任何具体的数据类型,任何地址都可 以赋给指针变量 注意: ①如果需要将void指针的值赋给其他类型的指针,则需要 进行强制类型转换 ②void型指针p指向了整型变量i,则应用*(int*)p才能访 问i。 C++程序设计课件设计制作:徐龙琴 20
C++程序设计课件 设计制作:徐龙琴 20 § 8.2 void指针和const指针 ⒈void(空)指针:是一种不确定类型的指针,它可以指向任 何类型的变量。其语法格式为: void *指针变量; ◆ 指针变量:不指向任何具体的数据类型,任何地址都可 以赋给指针变量 例: int a=9; void *p1=&a; int b=*(int *)p1; int *p2=(int *)p1; 注意: ①如果需要将void指针的值赋给其他类型的指针,则需要 进行强制类型转换。 ②void型指针p指向了整型变量i,则应用*(int *)p才能访 问i