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;
}
全部评论

相关推荐

头像
昨天 15:46
已编辑
中南大学 后端
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务