day09(C基础)函数

函数基础知识:

定义: 一个可以完成特定功能的代码模块 函数可以实现代码的复用


三要素:功能 参数 返回值

格式:存储类型 数据类型 函数名(参数

{

//逻辑代码 函数体

}

函数的特点:

  • 函数不调用不执行
  • 函数调用多次就会执行多次

函数调用:函数名(参数);

#include <stdio.h>
#include <string.h>
int fun()
{
    //  输出今天周五
    printf("今天周五\n");
}
int main(int argc, char const *argv[])
{
    // 调用
    fun();
    fun();
    fun();
    fun();    //调用了4次,输出4次
    return 0;
}

定义函数时会出现以下几种情况:

 

1.参数

  • 定义时有参数,那么函数名后的小括号需要按照定义变量的方式定义参数

       调用时函数名后的小括号也要传递相应个数和类型的参数

  • 没有参数,定义时没有参数 那么调用时也不需要写参数

2.返回值

  • 有返回值,在内部需要书写return进行数据返回,需要将函数名前面的数据类型定义成和返回值相同
  • 无返回值,函数需要定义成void类型

3.定义子函数时如果写在主函数的下面,需要先声明再调用
   

    函数的声明: 存储类型 数据类型 函数名(参数);

参数的分类:

  • 形参:定义函数时写在函数小括号内的参数

                  用来接收实参的传值的

  • 实参:函数调用时写在小括号内的参数

                  用来给形参传递值的(给形参赋值)

注意:形参的个数要和实参的个数一一对应(数据类型也要对应)

练习:

使用函数实现计算两个数的和 返回结果

返回值return:

作用:

  1. 返回数据给外界
  2. 阻断代码的执行 结束当前函数

函数的传参:

      1.值传递

单向传递(实参--->形参)修改形参的值 实参不会发生变化

      2.地址传递

双向传递 修改形参的值 实参会发生变化

地址传递本质是一个值传递

  

         3.数组传递

开辟堆区空间:

堆区的特点

由我们程序员随时申请,由我们自己随时释放。

堆和栈的主要区别有:

1、 栈由系统自动分配,而堆是人为申请开辟;

2、 栈获得的空间较小,而堆获得的空间较大;

3、栈由系统自动分配,速度较快,而堆一般速度比较慢;

4、栈是连续的空间,而堆是不连续的空间是随机分配的。

malloc

#include <stdlib.h>

void *malloc(size_t size);

功能:开辟堆区空间

参数: size:开辟空间的大小

返回值:任意类型的指针 开辟成功后空间的首地址 失败:NULL

释放堆区空间

free

#include <stdlib.h>

void free(void *ptr);

功能:释放堆区空间

参数:ptr:要释放的堆区空间的地址

返回值:无

 int *p = (int *)malloc(sizeof(int) * 3); // 12
    if (p != NULL)
    {
      printf("%p\n", p);
    }
    else
    {
      printf("error\n");
    }
    free(p);//释放堆区空间
    p=NULL;//指针置空

注意:

  1. 手动开辟堆区空间,要注意内存泄漏
  2. 使用完堆区空间后及时释放空间 指针要及时置空

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值