夏习: °1.指针变量作为函数的参数(p138例题) 函数的参数不仅可以是整型、实型等基本数据类型, 还可以是指针类型。它的作用是把地址传给被调函 数。注意:被调用函数不能改变实参指针变量的值, 但可以改变实参指针变量所指向的变量的值。 几种常见的错误(p139) (1)(2)(3) 引用一个数组元素,可以用两种方法: 下标法:通过数组元素序号来访问数组元素,用a 形式来表示; 指针法:通过数组元素的地址访问数组元素,用 16 (p+i)或*a+i)的形式来表示
16 • 复习: • 1.指针变量作为函数的参数(p138例题) • 函数的参数不仅可以是整型、实型等基本数据类型, 还可以是指针类型。它的作用是把地址传给被调函 数。注意:被调用函数不能改变实参指针变量的值, 但可以改变实参指针变量所指向的变量的值。 • 几种常见的错误(p139) • (1)(2)(3) • 引用一个数组元素,可以用两种方法: • 下标法:通过数组元素序号来访问数组元素,用a[i] • 形式来表示; • 指针法:通过数组元素的地址访问数组元素,用 *(p+i)或*(a+i)的形式来表示
[例9]输出数组的全部元素。(设10个元素,整 型) ·访问各元素有三种方法: 1、下标法(常用,很直观) main( ·{inta[10 int 1; for(i=0; i<10; i++) scanf( %d",&a[jl) printf(" \n") for(i=0;i<10i+) ● printf("‰%d"a[ij 17
17 • [例9.5] 输出数组的全部元素。(设10个元素,整 型)。 • 访问各元素有三种方法: • 1、下标法(常用,很直观) • main() • {int a[10]; • int i; • for(i=0;i<10;i++) • scanf("%d", &a[i]); • printf("\n"); • for(i=0;i<10;i++) • printf("%d ",a[i]); • }
2、用数组名计算数组元素的地址。(效率与下标法 相同,不常用) main( int a [10] int for(i=0;<10++) scanf("‰"&a[); printf( n"E for(i=0;i<10;++) printf("%d",(a+i)
18 • 2、用数组名计算数组元素的地址。(效率与下标法 相同,不常用) • main() • { • int a[10]; • int i; • for(i=0;i<10;i++) • scanf("%d", &a[i]); • printf("\n"); • for(i=0;i<10;i++) • printf("%d ",*(a+i)); • }
3、用指针访问各元素。(常用,效率高 main( int a[10 int p, i for(i=0;<10/++) ° scanf("%d",&a[i]) ° printf("n"); for(p=a;p<(a+10)p++)/*p++使p指向下一个元 素*/ printf(("‰d",*p)
19 • 3、用指针访问各元素。(常用,效率高) • main() • { • int a[10]; • int *p, i; • for(i=0;i<10;i++) • scanf("%d", &a[i]); • printf("\n"); • for(p=a;p<(a+10);p++) /* p++使p指向下一个元 素 */ • printf("%d ",*p); • }
使用指针指向数组,应注意以下问题: 1、若指针p指向数组a,虽然p+i与a+i、*(p+i) 与*(a+意义相同,但仍应注意p与a的区别(a 代表数组的首地址,是不变的;p是一个指 针变量,可以指向数组中的任何元素),例 for(|p=a;a<(p+10;a++)a代表数组的首地址, 是不变的,a++不合法 printf(("‰d",*a) 2、指针变量可以指向数组中的任何元素, 注意指针变量的当前值
20 • 使用指针指向数组,应注意以下问题: • 1、若指针p指向数组a,虽然p+i与a+i、 *(p+i) 与*(a+i)意义相同,但仍应注意p与a的区别(a 代表数组的首地址,是不变的;p是一个指 针变量,可以指向数组中的任何元素),例、 • for(p=a; a<(p+10); a++) a代表数组的首地址, 是不变的,a++不合法 • printf("%d", *a) • 2、指针变量可以指向数组中的任何元素, 注意指针变量的当前值