C语言中数组作为函数的参数以及返回值的使用简单入门
函数通过数组作为参数 如果想通过一个一维数组作为函数的参数,就必须声明函数形式参数,使用以下三种方式与所有三个声明方法之一产生类似的结果,因为每一种方式告诉编译器,一个整数指针将会要被接收。类似的方式,可以使用多维数组形式参数。 方式-1 void myFunction(int *param) void myFunction(int param[10]) void myFunction(int param[]) double getAverage(int arr[],int size) { int i; double avg; double sum; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; } 现在,让我们调用上面的函数如下: #include <stdio.h> /* function declaration */ double getAverage(int arr[],int size); int main () { /* an int array with 5 elements */ int balance[5] = {1000,2,3,17,50}; double avg; /* pass yiibaier to the array as an argument */ avg = getAverage( balance,5 ) ; /* output the returned value */ printf( "Average value is: %f ",avg ); return 0; } 当上述代码被编译在一起并执行时,它产生了以下结果: Average value is: 214.400000 正如所看到的,数组的长度并不重要,只要C语言函数不进行形式参数的边界检查。 函数返回数组 int * myFunction() 现在,考虑下面的函数,将产生10个随机数字和使用数组返回它们,并调用这个函数如下:
#include <stdio.h> /* function to generate and return random numbers */ int * getRandom( ) { static int r[10]; int i; /* set the seed */ srand( (unsigned)time( NULL ) ); for ( i = 0; i < 10; ++i) { r[i] = rand(); printf( "r[%d] = %d ",i,r[i]); } return r; } /* main function to call above defined function */ int main () { /* a yiibaier to an int */ int *p; int i; p = getRandom(); for ( i = 0; i < 10; i++ ) { printf( "*(p + %d) : %d ",*(p + i)); } return 0; } 当上述代码被编译在一起并执行时,它会产生导致一些如下: r[0] = 313959809 r[1] = 1759055877 r[2] = 1113101911 r[3] = 2133832223 r[4] = 2073354073 r[5] = 167288147 r[6] = 1827471542 r[7] = 834791014 r[8] = 1901409888 r[9] = 1990469526 *(p + 0) : 313959809 *(p + 1) : 1759055877 *(p + 2) : 1113101911 *(p + 3) : 2133832223 *(p + 4) : 2073354073 *(p + 5) : 167288147 *(p + 6) : 1827471542 *(p + 7) : 834791014 *(p + 8) : 1901409888 *(p + 9) : 1990469526 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |