例输入两个数,并使其从大到小输出 mainO) int *pl,*p2,*p,a,b; scanf("%d,%d",&a,&b); 2000 指针变量pl 2008 pl=&a;p2=&b; 2002 2006 ←一指针变量p2 if(a<b) 2004 一指针变量p 2006 p=pl;pl=p2;p2=p;) 2006 ←一 整型变量a printf("a-%d,b-%d n",a,b); 2008 5 整型变量b printf("max-%d,min-%d n",*pl,*p2); 9 运行结果:a=5,b=9 max=9,min=5
例 输入两个数,并使其从大到小输出 main() { int *p1,*p2,*p,a,b; scanf("%d,%d",&a,&b); p1=&a; p2=&b; if(a<b) { p=p1; p1=p2; p2=p;} printf("a=%d,b=%d\n",a,b); printf("max=%d,min=%d\n",*p1,*p2); } 运行结果:a=5,b=9 max=9,min=5 . . 指针变量p1 指针变量p 2000 2008 2002 2004 2006 指针变量p2 整型变量b 整型变量a 5 2006 9 2008 2006 2008 2006
§7.3指针与数组 ★指向数组元素的指针变量 array[0] 例int array[10]; array[1] int *p, array[2】 p=&array[0]; /台p-=array, array[3 或int*p=&carray[O]; 或int*p-=array, array[9 整型指针p &array[0] 数组名是表示数组首地址的地址常量
§7.3 指针与数组 指向数组元素的指针变量 例 int array[10]; int *p; p=&array[0]; // p=array; 或 int *p=&array[0]; 或 int *p=array; array[0] array[1] array[2] array[3] array[9] . 整型指针p &array[0] p 数组名是表示数组首地址的地址常量
如 int i,*p, p=1000; ★指针的运算 i-p, (x) 必指针变量的赋值运算 ●p=&a, (将变量a地址→p) ●p=aray; (将数组array首地址→p) ●p=&carray[];(将数组元素地址→p) ●pl=p2; (指针变量p2值→pl) ●不能把一个整数→p,也不能把p的值→整型变量 指针变量与其指向的变量具有相同数据类型
指针的运算 ❖指针变量的赋值运算 ⚫p=&a; (将变量a地址p) ⚫p=array; (将数组array首地址p) ⚫p=&array[i]; (将数组元素地址p) ⚫p1=p2; (指针变量p2值p1) ⚫不能把一个整数p,也不能把p的值整型变量 如 int i, *p; p=1000; () i=p; () 指针变量与其指向的变量具有相同数据类型
必指针的算术运算: ●p士i台p土ixd(i为整型数,d为p指向的变量所占字节数) ●p+,p-,pti,p-i,p+=i,p-=i等 ●若pl与p2指向同一数组,pl-p2=两指针间元素个数(pl-p2)/d ●pl+p2无意义 例p指向foat数,则p+1台p+1×4 a数组 p p+1,a+1 a0] 例p指向int型数组,且p=&a[O]; a[1] 则p+1指向a[l] a[2] 例inta[10]; a[3] int *p=&a[2]; p+i,a+i a[4] p++; *p=l; a[5] a[6] 例inta[10]; a[7] int *pl=&a 2; int*p2=&a[5]; a8] p+9,a+9 则:p2-pl=3, a9
❖指针的算术运算: ⚫pi p id (i为整型数,d为p指向的变量所占字节数) ⚫p++, p-, p+i, p-i, p+=i, p-=i等 ⚫若p1与p2指向同一数组,p1-p2=两指针间元素个数(p1-p2)/d ⚫p1+p2 无意义 例 p指向float数,则p+1 p+1 4 例 p指向int型数组,且p=&a[0]; 则p+1 指向a[1] 例 int a[10]; int *p=&a[2]; p++; *p=1; 例 int a[10]; int *p1=&a[2]; int *p2=&a[5]; 则:p2-p1=3; a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a数组 p p+1,a+1 p+i,a+i p+9,a+9 1
指针变量的关系运算 ●若p1和p2指向同一数组,则 ◆pl1<p2表示pl指的元素在前 ◆pl>p2表示pl指的元素在后 ◆pl=p2表示pl与p2指向同一元素 ●若pl与p2不指向同一数组,比较无意义 ●p=NULL或pI=NULL
❖指针变量的关系运算 ⚫若p1和p2指向同一数组,则 ◆p1<p2 表示p1指的元素在前 ◆p1>p2 表示p1指的元素在后 ◆p1==p2 表示p1与p2指向同一元素 ⚫若p1与p2不指向同一数组,比较无意义 ⚫p==NULL或p!=NULL