C语言学习随笔-10 函数

函数是一组一起执行一个任务的语句。

函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。

C标准库提供了大量的程序可以调用的内置函数。

1、函数的定义

     如:

int main()

{
      return 0;
}

     int :返回值类型

     main:函数名-->标识符,就是一个名字,想怎么起就怎么起

     ():描述参数

     return 0:函数返回值

     函数返回值类型 函数名(形参)

     {

         函数体;

         return 返回值;

     }

     注意:-  函数的返回值类型必须和return后面的数据类型一致;

                -  函数没有返回值是可以用void表示,如:int main(void){};

                -  return是结束当前函数;    

2、函数声明:函数声明会告诉编译器函数名称及函数如何调用。函数的实际主体可以单独定义

     函数声明包括以下几个部分:

return_type function_name(parameter list);

     以下是函数声明:

int max(int num1,int num2);

     在函数声明中,参数名称并不重要,只有参数类型是必需的,因此下面也是有效声明:

int max(int ,int);

3、函数的调用:函数名(函数参数)

      注意:函数参数必须和定义时候的参数一致。

复制代码
      /* 函数声明 */
      int max(int num1, int num2);
int main () { /* 局部变量定义 */ int a = 100; int b = 200; int ret; /* 调用函数来获取最大值 */ ret = max(a, b); printf( "Max value is : %d\n", ret ); return 0; } /* 函数返回两个数中较大的那个数 */ int max(int num1, int num2) { /* 局部变量声明 */ int result; if (num1 > num2) { result = num1 } else { result = num2 } return result; }
复制代码

4、函数参数:如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。

     函数参数:无论什么参数,都是以赋值的方式

     两中传参方式:值传递、地址传递

     形参:函数定义时候的参数;实参:函数调用时候的参数。

     默认情况下,C使用值传递来传递参数,一般来说,这意味着函数内的代码不能改变用于调用函数的是参数

复制代码
     //函数返回两个数中较大的那个数
     int max(int num1,int num2) //num1,num2为形参
     {
         //声明局部变量
         int result;
         if (num1 > num2)
         {
             return num1;
         }
         else
         {
             return num2;
         }
         return result;
       }

      int max2(int a,int b)
      {
      //int a = 1,int b = 2
      return a > b ? a : b;
       }
       //每一个函数都有的独立一个运行空间(栈区)
       void modify(int a) //int a = aa 函数修改a的值,不影响main函数aa的值
       {
           a = 1001;
       }

       void modifyPoint(int* a)//int *a = &aa
       {
          *a = 1001;
       }
复制代码

       当函数需要修改实参的时候,需要传入实参的地址
       -  函数中修改普通变量,要传入普通变量的地址(一级指针),在函数中用的是:*指针
       -  函数中修改一级指针,需要传入一级指针地址(二级指针),在函数中用的是:*指针
       //数据结构:为什么要传入二级指针

复制代码
 int g_num = 1999;
 void Modify(int **p)
 {
   *p = &g_num;
 }

 int main()
 {
   //函数调用的时候,形参必须和实参类型一致
   printf("%d\n",max2(1,2)); //实参 1 ,2

   //值传递:修改函数内的形参不会影响实参
   int aa = 999;
   modify(aa);
   printf("%d\n",aa);

   //地址传递:通过指针传递的方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行操作
   modifyPoint(&aa);
   printf("%d\n",aa);
int* p = &aa;//一级指针 //*p 等效于 aa Modify(&p); printf("%d\n",*p); int a = 100; int b = 200; int ret; //调用函数 ret = max(a,b); printf("Max value is : %d\n",ret); return 0; }
复制代码

 

posted @   啊波波老表  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示