C语言基础学习第七天,函数

1. 定义

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

格式:

存储类型 数据类型 函数名(参数列表

{

//功能代码 函数体

}

2. 调用

使用:函数调用

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

3.三要素

功能、参数、返回值

1)有参数的话正常在小括号中写参数

参数分类:形参 实参

形参:在定义函数时写在小括号中的参数,接收实参传递的数据

实参:调用时写在小括号的参数,给形参传递数据

int add(int a,int b)
{
    printf("%d\n",a+b);
}

2) 没有参数:参数列表可以省略,也可以用void

int fun(void)
{

}

3) 有返回值:要根据返回值的数据类型定义函数的数据类型

int fun(void)
{
    int a=101;
    return a;
}

4)没有返回值:数据类型为void,函数内部没有return 语句。

void fun(void)//没有返回值
{
     int a=101;
     printf("12345678");
}

5) 定义子函数时可以直接定义在主函数上面,如果定义在主函数下面需要提前声明函数

int fun(void);
int main(int argc, char const *argv[])
{ 
    fun();
    return 0;
}
int fun(void)//形参
{
    int a=101;
    printf("12345678");
}

4. return的作用

  1. 返回return右边的数据给外界
  2. 阻断代码的执行

 5. 函数传参

        1. 值传递

        实参-->形参(单向传递) 修改形参不会影响实参

        2. 地址传递

        双向传递 形参的改变会影响实参

        3. 数组传递

        和地址传递一样

6. 堆区空间 

malloc

头文件: #include <stdlib.h>

void *malloc(size_t size);

功能:开辟堆区空间

参数:size:开辟空间的大小(字节)

返回值:成功:返回开辟成功的首地址

              失败:NULL;

malloc free 搭配使用

free

#include <stdlib.h>

void free(void *ptr);

功能:释放堆区空间

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

返回值:无

void *p = malloc(sizeof(int) * 4);
if (p == NULL)
{
    printf("err\n");
}
printf("%p\n", p);
free(p);
p=NULL;

 

堆和栈的主要区别:

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

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

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

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

注意:

1.手动开辟堆区空间,要注意内存泄漏。当指针指向开辟堆区空间后,又对指针重新赋值,则没有指针指向开辟堆区空间,就会造成内存泄漏

2. 使用完堆区空间后及时释放空间

 欢迎大家指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值