C语言-指针(2)
函数与指针
传递指针给函数
C 语言允许传递指针给函数,只需要简单地声明函数参数为指针类型即可。能接受指针作为参数的函数,也能接受数组作为参数。
传递一个无符号long型指针给函数,并在函数内改变这个值
#include <stdio.h> #include <time.h> /*函数声明*/ void Number(unsigned long *ptr); /*函数定义*/ void Number(unsigned long *ptr) { *ptr=time(NULL); return; } int main() { unsigned long ptr_main; Number(&ptr_main); printf("Number of ptr_main is %ld\n",ptr_main); return 0; }
接受数组作为函数参数
#include <stdio.h> /*函数声明*/ double getAverage(int *arr,int size); /*函数定义*/ double getAverage(int *arr,int size) { int i,sum=0; double avg=0; for(i=0;i<=size;i++) { sum+=arr[i]; } avg=(double)sum/size; return avg; } int main() { int arr_main[5]={0,10,30,45,100}; double avg_main=0; avg_main=getAverage(arr_main,5); printf("平均值为: %f\n",avg_main); }
从函数返回指针
C 允许从函数返回指针。必须首先声明一个返回指针的函数,如下所示:
int * myFunction() { . . }
具体使用可以以一个例子说明,该函数生成10个随机数,以指针形式返回每一个数值
#include <stdio.h> #include <time.h> #include <stdlib.h> /* 要生成和返回随机数的函数 */ int * getRandom( ) { static int r[10]; int i; /* 设置种子 */ srand( (unsigned)time( NULL ) ); for ( i = 0; i < 10; ++i) { r[i] = rand(); printf("%d\n", r[i] ); } return r; } /* 要调用上面定义函数的主函数 */ int main () { /* 一个指向整数的指针 */ int *p; int i; p = getRandom(); for ( i = 0; i < 10; i++ ) { printf("*(p + [%d]) : %d\n", i, *(p + i) ); } return 0; }