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;
}
查看2道真题和解析