文档详情

C语言 指针与引用.ppt

发布:2017-02-01约1.52万字共56页下载文档
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * #include stdio.h void initArray(int x[], int n, int val) { int i; for(i = 0; i n; i++) x[i] = val; } void main() { int a[10], b[100]; initArray(a, 10, 1); initArray(b, 50, 2); initArray(b[50], 50, 4); } 例:数组前n个元素赋指定值 说明:分别给数组a的所有元素赋值1; 为数组b的前50个元素赋值2; 后50个元素赋值4。 * void sumAToB(int a[][10], int b[], int n) { int i, j; for(i = 0; i n; i++) for(b[i] = 0, j = 0; j 10; j++) b[i] += a[i][j]; } 例:将一个n×10的二维数组各行的10个元素之和存于另一个数组中。 说明:在函数中,对形参a的说明写成int a[][]是错误的。因二维数组的元素只是一行行存放,并不自动说明数组的列数(即每行元素个数)。如果在数组形参中不说明它的列数,就无法确定数组元素a[i][j]的实际地址。 * void readArray(int a[], int n) { int i; for(i = 0; i n; i++) { printf(Enter a[%d] , i); scanf(%d, a[i]); } } 【例6.7】为数组输入值的函数 【例6.8】求数组中最大元素值的函数 int maxInArray(int a[ ], int n) { int i, m; for(m = 0, i = 1; i n ; i++) if (a[m] a[i]) m = i; return a[m]; } * 数组形参说明:类型 形参名[ ] 或 类型 *形参名 #include stdio.h int sum(int *a, int n) /* 求n个数之和 */ { int i, s; for(s = i = 0; i n; i++) s += a[i]; return s; } void main() { int x[] = {1, 2, 3, 4, 5}; int i, j; i = sum(x, 5); j = sum(x[2], 3); printf(i = %d\nj = %d\n, i, j); } 数组形参说明 运行结果 i = 15 j = 12 * 指针形参就是函数中的指针变量,函数sum()的定义可改写成如下形式: int sum(int *a, int n) { int s = 0; for( ; n--; ) s += *a++; return s; } 数组形参说明 利用首元素指针和元素个数等形参,对数组进行处理。函数sum()也可改写成以下形式。 int sum(int *a, int n) { int *ap, s; for(s = 0, ap = a; ap a+n; ap++) s += *ap; return s; } * 将一个已知字符串的内容复制到另一字符数组中。拷贝函数要有两个形参from,to。from为已知字符串的首字符指针,to为存储复制的字符串首字符指针。 函数定义如下: void strcpy(char *to, char *from) { while (*to++ = *from++); } 【例6.9】字符串拷贝函数 strcpy() * 返回2个字符串第一个不同的字符的ASCII码的差值; 如果2个字符串内容完全相同,函数返回值为 0 int strcmp(char *s,char *t) /* return 0, if st; 0, if s==t; 0, if st
显示全部
相似文档