2、用指针变量对变量赋值 如:intI,j,*; =8] p=3 j=*p+2; 定义后 p=&l后 3后 *p+2后 1000 1000 1002 1002 1002 1002 1004 1004100 1004 1000 p1004
2、用指针变量对变量赋值 如: int I , j , *p; p=&I; *p=3; j=*p+2; 定义后 p=&I后 *p=3后 I j p : : : : 1000 1002 1004 I j p 1000 1002 1004 I j p 1000 1002 1004 I j p 1000 3 1000 1000 1002 1004 j=*p+2后 3 5 1000
例101 maino int a, b int *pointer, *pointer 2; a=100;b=10; pointer1=&a;/*把变量a的地址赋给 pointer1*/ pointer.2=&b;/*把变量b的地址赋给 pointer_2*/ printf(”%d,%Ⅶn”ra,b); printf(”%d,%dn”r* pointer1,为 pointer.2);
例10.1 main() { int a,b; int *pointer1, *pointer2; a=100;b=10; pointer1=&a; /*把变量a的地址赋给pointer_1*/ pointer2=&b; /*把变量b的地址赋给pointer_2*/ printf (”%d,%d\n”, a,b); printf(”%d,%d\n”, *pointer1,*pointer2); }
关于运算符&和*的几点说明: (1)结合性自右向左 如:inta,b,*p1,*2; 1=&a p2=&b &*p1=?相当于&(*p1)等于 &(*p1)=&(a)=&a=p1 *&a 相当于*(&a)=a (2)优先级处于第二位
关于运算符&和 * 的几点说明: (1)结合性 自右向左 如:int a, b, *p1, *p2; p1=&a; p2=&b; &*p1=? 相当于 &(*p1) 等于 &(*p1)=&(a)=&a=p1 *&a 相当于 *(&a)=a (2)优先级 处于第二位
(2)自增自减运算 如: int a, b,*pF p=&aa=3;b=5 (*p)++;相当于a++a==4 *p++;相当于*(p++) 若p为1000,则p++为1002 若 float a*p;p=&a 当p为1000则p++为1004 +与米同一级别,均为从右至左
(2) 自增自减运算 如: int a,b,*p; p=&a; a=3; b=5; (*p)++; 相当于 a++ a==4 *p++; 相当于 *(p++) 若p为1000, 则p++为1002 若float a,*p; p=&a; 当p为1000,则p++为1004 ++与*同一级别,均为从右至左
例[10.2]输入整数a和b,按大小的顺序输出 main ( int *p1,*p2, *p, a, be scanf( %d, %d", &a, &b); p1=&al;p2=&b; if (a<b Rp=p1; pl=p2; P2=piy printf("Mna=%db=%dⅦn”,a,b); printf ("max=%d, min=%d\in",*pl, *p2);
例[10.2]输入整数a和b,按大小的顺序输出。 main ( ) { int *p1, *p2, *p, a, b; scanf("%d,%d",&a,&b); p1=&al; p2=&b; if (a<b) {p=p1;pl=p2;p2=p;} printf ("\na=%d,b=%d\n” ,a,b); printf("max=%d,min=%d\n", *pl, *p2); }