例b用地址法存取数组元素 main() f int a[10l for(i=0;i<10;i++) scanf(%od", a+i); for(i=0;i<10;i++ printf(%d",*(a+D); printf( in");
例b 用地址法存取数组元素 main( ) { int a[10], i; for ( i=0; i<10; i++ ) scanf("%d", a+i ); for ( i=0; i<10; i++ ) printf("%d", *(a+i)); printf("\n"); }
数组元素的访问举例 例c用指针法存取数组元素。(即通过指针指 向数组的首地址,然后通过移动指针存取数组 元素。) main( maino fint a[10,"p, i; f int a[10, "p for(i=0,p=a;i<10;i++) for(p=a; p<a+10; p++) scanf(%od",p+i); scanf(%d",p); for(i=0,p=a;i<10;i++) for(p=a; p<a+10; p++) printf("%od", (p+i)) printf("%d",* p); printf("n; printf( n);
数组元素的访问举例 例c 用指针法存取数组元素。(即通过指针指 向数组的首地址,然后通过移动指针存取数组 元素。) main( ) { int a[10], *p, i; for (i=0, p=a; i<10; i++) scanf("%d", p+i); for (i=0, p=a; i<10; i++) printf("%d", *(p+i)); printf("\n"); } main( ) { int a[10], *p; for ( p=a; p<a+10; p++) scanf("%d", p); for ( p=a; p<a+10; p++) printf("%d", *p); printf("\n"); }
例c说明 2000 2001 p=& a 2002 2 等价于p 2003 p+十 2004 p++ 4 2005 2006 6 2007 2008 8 2009
例c 说明 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 02468 p = & a *p++ 0462 * p p++ 等价于 8
数组元素的访问小结: int i, a 10 *D=a9 表现形式 义 &aro] a p 维数组首地址 &ai]a+ip+i一维数组下标为的元素地址 a[o] p|一维数组下标为0的元素的值 a[i]*(a+i)*(P+)一维数组下标为i的元素的值
数组元素的访问小结: int i,a[10],*p=a; 表 现 形 式 含 义 &a[0] a p 一维数组首地址 &a[ i ] a+i p+i 一维数组下标为i 的元素地址 a[0] *a *p 一维数组下标为0 的元素的值 a[ i ] *(a+i) *(p+i) 一维数组下标为i 的元素的值
注意: 数组名是一个常量,不允许重新赋值。 指针变量是一个变量,可以重新赋值。 >p+i和a均表示数组元素a的地址,均指向 ali (p+i和*(a+均表示p+和a+i所指对象的内容, 即a团i] >p++:等价于*p++)。其作用:先得到,再 使p=p+1
注意: ➢ 数组名是一个常量,不允许重新赋值。 指针变量是一个变量,可以重新赋值。 ➢ p+i和a+i均表示数组元素a[i]的地址,均指向 a[i]。 *(p+i)和*(a+i)均表示p+i和a+i所指对象的内容, 即a[i]。 ➢ *p++:等价于*(p++)。其作用:先得到*p,再 使p=p+1