124指针与数组 二、通过指针引用数组元素 「例12.4从键盘输入10个整数,存放在数组中,并输出数组 的全部元素。用指针变量指向数组元素。 main( i int i, a[10],*p; for(i=0; i<10; it+) scanf("%d",&a[il); for(p=a; p<a+10: p++) printf(%04d",*p); printf("in") 第十二章指针
第十二章 指针 [例12.4]从键盘输入10个整数,存放在数组中,并输出数组 的全部元素。用指针变量指向数组元素。 main( ) { int i,a[10], *p; for (i=0;i<10;i++) scanf("%d",&a[i]); for(p=a;p<a+10;p++) printf("%4d", *p); printf("\n"); } 12.4 指针与数组 二、通过指针引用数组元素
124指针与数组 二、通过指针引用数组元素 ■注意: (1)用p++使p的值不断改变,这是合法的,如果 不用p而企图使a变化是不行的,如将上述程序 的最后两行改为: for(p=a; a<p+10; a++) printf(ood",*a); (2)要注意指针变量的当前值,请看下面的程序。 第十二章指针
第十二章 指针 ◼ 注意: (1)用p++使p的值不断改变,这是合法的,如果 不用p而企图使a变化是不行的,如将上述程序 的最后两行改为: for(p=a;a<p+10;a++) printf("%d", *a); (2) 要注意指针变量的当前值,请看下面的程序。 12.4 指针与数组 二、通过指针引用数组元素
124指针与数组 二、通过指针引用数组元素 「例125输出a数组的10个元素。 main( t int *p, i, a[10 P-a; for(i=0; i<10; it+) scanf(1%d", p++); for(i=0;i10;i++,p++) printf("%d",“p); printf(("Ⅶn"); 输入:1234567890<回车> 运行结果: 22153234003003625202116318259823728483 解决这个问题的办法是在第二个for循环改为如下形式: for(i=0,p=a;i<10;i++,p++) printf(%od,*p) 第十二章指针
第十二章 指针 [例12.5]输出a数组的10个元素。 main ( ) { int *p,i,a[10]; p=a; for(i=0;i<10;i++) scanf ("%d",p++); for(i=0;i<10;i++,p++) printf ("%d" , *p); printf ("\n"); } 输入:1 2 3 4 5 6 7 8 9 0<回车> 运行结果: 22153 234 0 0 30036 25202 11631 8259 8237 28483 12.4 指针与数组 二、通过指针引用数组元素 解决这个问题的办法是在第二个for循环改为如下形式: for(i=0,p=a;i<10;i++,p++) printf("%d", *p);
124指针与数组 二、通过指针引用数组元素 (3)注意指针变量的运算。如果先使p指向数组a(即p=a),则: ①p+(或p+=1),p指向下一元素a1l,若再执行*p,取了 元素a[的值。 ②*p++,由于++和*同优先级,是自右而左的结合方向, 因此它等价于“(p+)。作用是先得到p指向的变量的值 (即*p),然后再使p+1 ③(p+)和*+十p作用不同。前者是先取p值。然后使p 移动,后者是先使p移动,再取*p。若p的初值为a(即 &a0),输出*(p++)时,得a|0的值,而输出* (十+p),则得到a[1的值 第十二章指针
第十二章 指针 (3)注意指针变量的运算。如果先使p指向数组a(即p=a),则: ①p++(或p+=1),p指向下一元素a[1],若再执行*p,取了 元素a[1]的值。 ②*p++,由于++和*同优先级,是自右而左的结合方向, 因此它等价于*(p++)。作用是先得到p指向的变量的值 (即*p),然后再使p+1。 ③*(p++)和*++p作用不同。前者是先取*p值。然后使p 移动,后者是先使p移动,再取*p。若p的初值为a(即 &a[0]),输出*(p++)时,得a[0] 的值,而输出* (++p),则得到a[1]的值。 12.4 指针与数组 二、通过指针引用数组元素
124指针与数组 二、通过指针引用数组元素 ④(p)+表示p所指向元素值加1,即(a[o])++,如 果a[0]=3,则执行(a[])++后,a0]的值为4。 注意,是元素值加1,而不是指针值加1。 ⑤如果当前p指向a数组中第i个元素,则: (p-)相当于a[i-],先取p值作“*”运算,再使 自减 (艹+p)相当于a[++订,先使p自加,再作*运算 *(-p)相当于a[-],先使p自减,再作*运算 第十二章指针
第十二章 指针 ④(*p)++表示p所指向元素值加1,即(a[0])++,如 果a[0]=3,则执行(a[0])++后,a[0]的值为4。 注意,是元素值加1,而不是指针值加1。 ⑤如果当前p指向a数组中第i个元素,则: *(p--)相当于a[i--],先取p值作“*”运算,再使 p自减。 *(++p)相当于a[++i],先使p自加,再作*运算。 *(--p)相当于a[--i],先使p自减,再作*运算。 12.4 指针与数组 二、通过指针引用数组元素