C语言函数专题(嵌入式学习)

文章介绍了函数的基本概念,包括定义、三要素(功能、参数、返回值)和格式。讨论了无参数、无返回值的函数表示,以及函数声明和调用的方法。此外,还提供了计算字符串中特定字符个数的函数示例和利用地址传递实现两个数交换的函数。文章还强调了值传递和地址传递的区别,以及数组在函数参数中的传递行为。
摘要由CSDN通过智能技术生成

1.定义

一个用来完成特定功能的代码模块

2.三要素

功能、参数、返回值

3.格式

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

函数体;

return 表达式;

}

  1. 没有参数:参数列表可以省略,也可以用void
  2. 没有返回值:数据类型为void,函数内部没有return语句
    注意:定义子函数式,可以直接定义在main函数上面,也可以定义在main函数下面,但是需要提前声明函数。

4.函数声明

存储类型 数据类型 函数名(参数列表);//形参

5.函数调用

  1. 没有返回值:直接调用:函数名(实参);

  2. 有返回值:如果需要接收返回值就定义和返回值类型相同的变量去接收,如果不需要接收返回值,就直接调用。

练习1:编写一个函数,函数的2个参数,第一个是一个字符,第二个是一个char *,

返回字符串中该字符的个数。

int num(char ch,char * p)//遍历字符串,过程中判断*p是否等于ch
{
    int t=0;
    while(*p != '\0')
    {
        if(*p == ch)
            t++;
        p++;
    }
    return t;
}

6.函数传参

1.值传递

单向传递,将实参传递给形参使用,改变形参不会反向影响实参

2.地址传递

双向传递,在函数中修改形参,实参会随之改变

3.数组传递

和地址传递一样,参数中存在数组定义,会认为是指针

练习:封装函数实现两个数的交换

#include<stdio.h>
void exchange(int *a,int *b){
    int c;
    c=*a;
    *a=*b;
    *b=c;
}
int main(int argc, char const *argv[])
{
    int a,b;
    scanf("%d %d",&a,&b);
    exchange(&a,&b);
    printf("a=%d,b=%d",a,b);
    return 0;
}

补充:

char *p = “hello”;

//p在栈区开辟4字节空间,存放hello字符串首地址

//hello存在常量区

char buf[32]=“hello”;

//buf:在栈区开辟32个字节空间,存放“hello”字符串。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值