Lecture 18 Pointers(2 of 3).ppt

Lecture 18 Pointers(2 of 3)

Dept.of Computer Sci. Tech.,YBU 向函数传递一维数组信息 参数传递示例 数组与指针 main() { int a[10]; m=func(a, 10); … } int func(int *p, int n) ? int func(int p[ ], int n) { … } 由于此函数不知道数组a的长度,元素个数必须通过参数传递给n … a[0] a[1] a[2] … a[9] p 数组a在main中可见,在func中不可见 变量p在func中可见,在main中不可见 函数func中可通过指针p存取该数据区域 形参数组名p是指针,是变量而不是常量! * Dept.of Computer Sci. Tech.,YBU 向函数传递一维数组信息 参数传递示例 数组与指针 main() { int a[10]; m=func(a+1, 2); … } int func(int *p, int n) /* ? int func(int p[ ], int n) */ { … } … a[0] a[1] a[2] … a[9] p 通过指针变量p和形参n函数func可对main中的a[1],a[2]进行操作 * 把a+1传给p,而不是*p ? a 示例-1:对具有n个元素的数组元素进行升序排序 算法思想 数组与指针 5 3 6 2 4 2 3 6 5 4 2 3 6 5 4 2 3 4 5 6 i==0 m==3 i==1 m==1 i==2 m==4 i==n-2 m==3 n==5 * Dept.of Computer Sci. Tech.,YBU Dept.of Computer Sci. Tech.,YBU 示例-1:主函数 数组与指针 #include stdio.h void sort(int *, int); int min(int *, int, int); void swap(int *, int *); main() { int i, a[10]; for (i=0; i10; i++) scanf(”%d”, a+i); /*对a[0],a[1],…,a[9]升序排序*/ sort(a, 10); for (i=0; i10; i++) printf(”%d”, a[i]); } … a[0] a[1] a[2] … a[9] a 定义并输入数据 数据排序 输出数据 * Dept.of Computer Sci. Tech.,YBU 示例-1:函数sort 原型:void sort(int *p, int n); 功能:对p所指数组的n个元素进行升序排序 数组与指针 void sort(int *p, int n) /* ? void sort(int p[ ], int n) */ { /* 对p[0],p[1],…,p[n-1]进行升序排序 */ for(i=0; i=n-2; i++) { 确定p[i], p[i+1], …, p[n-1]中最小元素的下标m ; if (m!=i) 交换p[i]与p[m]的值 ; } } … p[0] p[1] p[2] … p[n-1] a[0] a[1] a[2] … a[9] main: p sort: * 交给函数min 交给函数swap a Dept.of Computer Sci. Tech.,YBU 示例-1:函数min 原型:int min(int *b, int n, int i); 功能:求指针b所指的数组(共n个元素)第i个元素起最小元素的下标 数组与指针 int min(int *b, int n, int i) /* ? int min(int b[ ], int n, int i) */ { /*在b[0],b[1],…,b[n-1]中求b[i]~b[n-1]之间最小元素的下标*/ int m, k; for(m=i, k=i+1; kn; k++) if (b[k]b[m]) m=k; return m; } … … p[0] … p[i] … p[n-1] a[0] … a[i] … a[9] main: p sort: b min: b[0] … b[i] … b[n-1] * a 数组与指针 Intelligent Information Processing Lab., Dept.of Computer Sci. Tech.,YBU 示例-1:函数swap 原型:void swap(int *p, int *q); 功能:交换指针p和

文档评论(0)

1亿VIP精品文档

相关文档