为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第13天【养成记】嵌入式挑战第13天,co...

【九月打卡】第13天【养成记】嵌入式挑战第13天,const关键字、函数初识

2022.09.18 23:39 27浏览

课程章节:

  • 课程名称:物联网/嵌入式工程师
  • 章节名称:第4周之第四讲 1-5 至 1-6 const关键字、函数初识
  • 讲师姓名:大白老师

课程内容:

局部变量

局部变量 : 在函数内部定义的变量,我们叫做局部变量。
特点:
(1) 只能在定义它的那个函数内部使用,其他位置不能使用。----作用域
(2) 调用函数时,运行在定义变量代码的时候,系统会申请内存空间, 当定义该变量的函数调用结束后,
 系统会回收局部变量对应的内存空间. -----生命周期
(3) 局部变量未初始化,值默认为随机值。

示例代码

#include <stdio.h>

int global = 20; //全局变量

void do_global()
{
    global ++;
    printf("global = %d\n",global);
    return ;
}

void do_local()
{
    int t = 10;  //局部变量
    t++;

    printf("t = %d\n",t); //1
    return ;
}

int main()
{
    do_global();
    do_global();
    do_global();
    printf("======================\n");
    global++;
    printf("g = %d\n",global);
    do_local();
    do_local();
    do_local();

    return 0;
}

静态变量

静态局部变量

格式:
static  数据类型 变量名;

static int c;

特点:
(1)静态局部变量,可以改变原来变量的生命周期,当定义该变量的函数调用结束后,
系统不会回收对应的内存空间,当main()函数结束后, 内存空间才会被回收.
(2)只能在定义它的那个函数内部使用,其他位置不能使用。----作用域
(3)静态局部变量未初始化,值默认为0

代码示例

#include <stdio.h>

void do_local()
{
    // 只定义一次,可以使用多次
    static int t = 10;// 局部变量
    t++;

    printf("t = %d\n",t);
}

int main()
{
    do_local();
    do_local();
    do_local();
    return 0;
}

课后任务

练习

定义全局变量 global_data = 0;
设计无参数的函数global_calc(),在这个函数内部
要求用户从键盘输入一个数据赋值给global_data,然后要求
该函数输出,从1~global_data之间所有能被7整除的数据。

main函数来调用以下global_data这个函数。

代码

#include <stdio.h>

int global_data = 0;

void global_calc() {
    int n = 0;
    printf("请输入一个数据:\n");
    scanf("%d", &global_data);
    printf("从1~%d之间所有能被7整除的数据有:\n", global_data);
    for (int i = 1; i <= global_data; ++i) {
        if (i % 7 == 0) {
            n = i;
        }
    }
    for (int i = 1; i <= global_data; ++i) {
        if (i % 7 == 0) {
            i != n ? printf("%d,", i) : printf("%d\n", i);
        }
    }

    return;
}

int main() {
    global_calc();
    return 0;
}

学习笔记:

C语言中的函数:函数初识

前言

C语言强调模块化编程,这里所说的模块就是函数,即把每一个独立的功能均抽象为一个函数来实现。从一定意义上讲,C 语言就是由一系列函数串组成的。

我们之前把所有代码都写在 main 函数中,这样虽然程序的功能正常实现,但显得杂乱无章,代码可读性、可维护性较差。学完本节之后,应把每个具体的独立功能单位均抽象为一个函数,在 main 函数中调用各个函数。

C语言函数基本用法

概念

函数是一系列C语言语句的集合,为了完成某个可能会重复使用的功能,而封装起来的代码。
设计的好处: 实现模块化的编程思想,提高程序的可读性
函数设计要求: 见名知意

使用方法

方法1:先声明,在定义

返回值类型 函数名(类型 参数1,类型 参数2….); // 函数的声明

int main()
{
    函数名(参数1,参数2,参数3); // 函数的调用
    return 0;
}

返回值类型 函数名(类型 参数1,类型 参数2….) // 函数的定义
{
    C语言代码;
    return 数据;
}
示例代码
#include <stdio.h>

void  printf_star(); // 函数的声明

//*
//**
//***
int main() // 程序的入口,程序开始的地方
{
    int k = 0;
    
    for(k = 1;k <= 3;k++)
    {
        printf_star();// 函数的调用
    }
    return 0;
}

// void 表示返回空
void  printf_star()  // 函数的定义
{
    int i = 0,j = 0;
   
    for(i = 1;i <= 3;i++)// i代表行数
    {
        for(j = 1;j <= i;j++) // j代表每行答应的星星个数        
        {
             printf("*");
        }
        printf("\n");
    }
    return ;
}

【推荐】方法2:在main函数上定义

返回值类型 函数名(类型 参数1,类型 参数2….) // 函数的定义
{
    C语言代码;
    return 数据;
}

int main()
{
    函数名(参数1,参数2,参数3); // 函数的调用
    return 0;
}
代码示例
#include <stdio.h>

//void 表示返回空
void  printf_star()  // 函数的定义
{
    int i = 0,j = 0;
    int k = 0;
    for(i = 1;i <= 3;i++)// i代表行数
    {
        for(j = 1;j <= i;j++) // j代表每行答应的星星个数        
        {
            putchar('*');
        }
        putchar('\n');
    }
    return ;
}

//*
//**
//***
int main() // 程序的入口,程序开始的地方
{
    int k = 0;
    
    for(k = 1;k <= 3;k++)
    {
        printf_star();// 函数的调用
    }
 
    return 0;
}

课后任务

练习

1.设计一个void do_sum()函数,要求函数内部无参数和返回值,内部定义一个变量int m,
 要求用户从键盘输入一个数据赋值给m。
 判断m的值,若是m为奇数,输出1 + 3 + 5 + 7 + 9 +...+m的和.
          若是m为偶数,输出0 + 2 + 4 + 6 + 8 +...+m的和.
2.设计一个void do_Result()函数,要求函数内部定义int a,b两个变量,
然后从键盘输入2个整数赋值给a,b,并输出(a + b) / 2的值。

代码

#include <stdio.h>

// 
void do_sum()
{
    int i,m,ret,result = 0;
    printf("请输入一个数据:\n");
    ret = scanf("%d",&m);

    if (ret != 1)
    {
        while (getchar() != '\n');
        printf("请输入数字!");
        do_sum();
    }

    i = m & 1 ? 1 : 0;

    for (; i <= m; i+=2) {
        result += i;
        i != m ? printf("%d + ",i) : printf("%d",i);
    }

    printf(" = %d\n",result);

    return;
}

//
void do_Result()
{
    int a,b,ret;
    printf("请输入两个2个字符数据:\n");
    scanf("%d",&a);
    scanf("%d",&b);

    ret = (a + b) / 2;
    printf("(%d + %d) / 2 = %d\n",a,b,ret);

    return;
}

int main()
{
    do_sum();
    do_Result();
    return 0;
}

课程评价:

通过const关键字学习,知道了函数中变量为只读的模式从而使函数更为健壮。

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
11
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

145篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消