81指和指变量 8.12指针变量的定义 2000 E2001 指针变量定义的形式指针变量初始化 2002 main maino 2000 2003 lint a, *p I int a, p=&a 2004 float x, q float x,*q=&x; 2005 p && a 2006 2007 2008 2004 2009 2021/2/21
2021/2/21 6 main() { int a,*p=&a; float x,*q=&x; … } 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 a p x q 2004 8.1 指针和指针变量 8.1.2 指针变量的定义 main() 2000 {int a,*p; float x,*q; p = &a; q = &x; … } 指针变量定义的形式 指针变量初始化
81指和指变量 813指针的基本运算 2000 5 间接存取运η E2001 赋值运犷 2002 maino maino 2000 2003 [int a, p=&a tint a, *p; 2004 float x, q=&x; float x, *kg: 2005 p=5; p=&a 2006 printf(a+3=%dn",p+3):q&x 2007 2008 2004 2009 =&a: 2021/2/21
2021/2/21 7 main() { int a,*p=&a; float x,*q=&x; *p = 5; printf("a+3=%d\n",*p+3); … } 间接存取运算 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 a p x q 2004 8.1 指针和指针变量 8.1.3 指针的基本运算 2000 ×*p = &a; main() {int a,*p; float x,*q; p = &a; q = &x; … } 赋值运算 5
81指和指变量 8 首针变量的 【例81】输入a、b两个整数, 使用指针变量按大小顺序输出 6 8 这两个整数。 p1=&a: p2=&b scanf(”%d%d”,pl,p2); if(*p1<*p2) I p=pl: p1=p2: p2=p: I printf("a=%d, b=%d\n",a, b) printf (" max=%d, min=%d\n",*p1. *p2):a=b, b: max=8. min=6 2021/2/21
2021/2/21 8 方法1:目标变量值不变,改变指针变量的 指向求解。 main( ) { int a,b,*p1,*p2,*p; p1=&a;p2=&b; scanf(″%d%d″ ,p1,p2); if(*p1<*p2) { p=p1; p1=p2; p2=p;} printf(″a=%d,b=%d\n″,a,b); printf(″max=%d,min=%d\n ″ ,*p1,*p2); } a b p1 p2 p 6 8 a=6,b=8 max=8,min=6 8.1 指针和指针变量 【例8.1】输入a、b两个整数, 使用指针变量按大小顺序输出 这两个整数
81指和指变量 方法2:利用指针变量直接改变目标变量的值a、*p1b、*p2 求解。 maino t int a, b, t, *pl, p2 p1=&a; p2=&b: p 2 scanf(”%d%d”,pl,p2); if(*p1<*p2) t t=*p1;*p1=*p2;*D2=t;} 6 printf ( "a=%d, b=%d\n",a, b) a=8,b 6 printf("max=%d, min=d\n",*pl, *p2) max=8. min=6 2021/2/21
2021/2/21 9 方法2:利用指针变量直接改变目标变量的值 求解。 main() { int a,b,t,*p1,*p2; p1=&a;p2=&b; scanf(″%d%d″ ,p1,p2); if(*p1<*p2) { t=*p1; *p1=*p2; *p2=t;} printf(″a=%d,b=%d\n″,a,b); printf(″max=%d,min=%d\n ″ ,*p1,*p2); } a、*p1 b、*p2 p1 p2 t 6 8 a=8,b=6 max=8,min=6 8.1 指针和指针变量 6 8 6
81指和指变量 10 813指针的基本运算 →a[010 1404 指针的加微运 1405 20406 指针加减运算要点: 407 ①只有当指针变量指向数组时指针的加减 a[2 运算才有意义 30F408 ②指针变量可加减一个整型表达式。如: 1409 pl++、p2+3、p2-、p2-2 40 1410 ③指针的加减运算是以基类型为单位(即 sizeof(类型))的 ④两个指针变量不能作加法运算,只有当 a45012 两个指针变量指向同一数组时,进行指针变 1413 量相减才有实际意义。如:p2p1。 2021/2/21
2021/2/21 10 指针的加减运算 8.1 指针和指针变量 8.1.3 指针的基本运算 main() {int a[]={10,20,30,40,50},*p1,*p2; p1=p2=a; printf(″p1=%u,*p1=%d\n″ ,p1,*p1); p2+=3; printf(″p2=%u,*p2=%d\n″ ,p2,*p2); } P1=404,*p1=10 P2=410,*p2=40 404 405 406 407 408 409 410 411 412 413 a[0] a[1] a[2] a[3] a[4] 30 20 10 40 50 p1 p2 指针加减运算要点: ① 只有当指针变量指向数组时指针的加减 运算才有意义。 ② 指针变量可加减一个整型表达式。如: p1++、p2+3、p2--、p2-2。 ③ 指针的加减运算是以基类型为单位(即 sizeof(类型))的。 ④ 两个指针变量不能作加法运算,只有当 两个指针变量指向同一数组时,进行指针变 量相减才有实际意义。如:p2-p1