首页 > 其他分享 >嵌入式学习--DAY10:函数的调用

嵌入式学习--DAY10:函数的调用

时间:2024-07-25 19:00:14浏览次数:15  
标签:栈区 调用 常量 形参 -- 嵌入式 DAY10 实参 函数

一、函数参数和函数的值

1.在定义函数中指定的形参,在未出现函数调用时,它们并不占用内存中的存储单元,只有在发生函数调用时,函数中的形参才会被分配内存单元。在调用结束后,形参所占的内存单元也会被释放。

2.实参可以是常量、变量或表达式。在被定义的函数中,必须指定形参的类型,实参与形参的类型应当相同或赋值兼容。

3.实参向形参的数据传递是“值传递”,单向传递,只能有实参传给形参。函数的形参相当于实参的复制,对形参进行修改不会对实参产生影响。解决办法为传地址。

4.无法在被调函数中修改主调函数的参数。

5.函数传参默认自右向左。

6. 栈区:栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会 自动被销毁。栈区是先进后出原则。

堆区:堆区由程序员分配内存和释放。

字符串常量区:字符串、数字等常量存放在常量区。const修饰的全局变量存放在常量区。程序运行期间,常量区的内容不可以被修改。

静态区(全局区):通常是用于那些在编译期间就能确定存储大小的变量的存储区,但它用于的是在整个程序运行期间都可见的全局变量和静态变量。全局区有 .bss段 和 .data段组成,可读可写。

         bss段:未初始化的全局变量和未初始化的静态变量存放在**.bss段**。.bss段不占用可执行文件空间,其内容由操作系统初始化。
        data段:已初始化的全局变量和静态变量存放在.data段。data段占用可执行文件空间,其内容有程序初始化。

代码区:程序执行代码存放在代码区,其值不能修改(若修改则会出现错误)。字符串常量和define定义的常量也有可能存放在代码区。

二、函数嵌套调用

调用函数本质为函数的跳转。

以下函数第一个为判断一个年份是否为闰年,第二个则是选定一个区间输出这个区间的闰年。

调用以上函数直接打印结果。

第一个函数为判断一个数是否为素数,第二个为给定一个区间输出该区间的素数。

调用函数输出结果。

三、函数递归调用

在调用一个函数的过程中又直接或间接的调用该函数本身,称为函数的递归调用。分为直接递归和间接递归。

不是死循环,会导致栈区消耗殆尽,导致程序崩溃。

用递归函数输出斐波那契数列。

注:使用函数要注意降低函数的耦合性,提高函数的复用性。

标签:栈区,调用,常量,形参,--,嵌入式,DAY10,实参,函数
From: https://blog.csdn.net/2301_78040391/article/details/140696951

相关文章

  • RecyclerView 滚动到指定position,且position所在的view 居屏幕中间显示
       RecyclerView滚动到指定position,且position所在的view居屏幕中间显示;   RecyclerView的scrollToPositionWithOffset和scrollToPosition,都可以实现滚到到指定位置,但是不能让所在的view居于手机的宽度的居中位置。    RecyclerView  滚动分为平......
  • Docker的一些知识点
    1.Docker中容器和镜像的区别镜像(Image):镜像是一个只读模板,包含了运行一个应用所需的所有内容:代码、运行时、库、环境变量和配置文件。镜像是构建容器的基础。你可以将它想象成是一个应用的“蓝图”。镜像通常是通过Dockerfile定义的,Dockerfile是一个文本文件,包含了一系列......
  • 深入解析 `sdbusplus::bus_t`
    在现代的Linux系统中,D-Bus(DesktopBus)是一个非常重要的进程间通信(IPC)机制。它允许不同的应用程序和系统组件之间进行高效、安全的通信。sdbusplus是一个用于简化D-Bus编程的C++库,而sdbusplus::bus_t则是这个库中的一个核心类,负责管理D-Bus连接。本文将详细介绍sdbusplus......
  • 程序员的自我提升之路:在AI时代保持竞争!
    前言每日技术干货,第一时间送达!引言:随着人工智能技术的飞速发展,程序员面临着前所未有的挑战和机遇。2024年,随着sora这样的先进AI技术的出世,程序员必须不断提升自己的技能和专业知识,以在竞争激烈的职场中快速成长,脱颖而出。本文将探讨程序员如何在AI时代通过学习新技术、深......
  • 用这些宝藏AI工具打造副业!实现被动收入!
    前言大家好,我是月月!今天我们来梳理一下在目前的形势下,如何用AI工具打造一个躺赚的副业,实现被动收入?有哪些方法和途径?在本篇文章我主要提供一些已有的AI工具,后面我们再根据具体的AI工具和场景来详细聊聊!1、pyVideoTranspyVideoTrans是一个集成多种功能的视频翻译工具,能够......
  • C语言:字符串函数、内存函数剖析
    字符串函数、内存函数剖析一、字符串函数(一)求字符串长度1、strlen(1)库函数实现(2)自定义实现(二)长度不受限制的字符串函数1、strcpy(1)库函数实现(2)自定义实现2、strcat(1)库函数实现(2)自定义实现3、strcmp(1)库函数实现(2)自定义实现(三)长度受限制的字符串函数介绍1、strncpy2、s......
  • 深入解析sizeof和strlen的区别与联系
    目录一、深度解析1.sizeof2.strlen 二、对比三、举例说明总结 大家好,今天我们来探讨一下C语言中两个常用的函数sizeof和strlen。虽然它们都与字符串有关,但它们的用途和实现原理却大相径庭。下面我将从以下几个方面进行对比分析:一、深度解析1.sizeof定义:sizeof是......
  • solution - qoj8794
    (Un)labeledgraphs题解orzjiangly通信题。不禁让人想到。对于这道题目,考虑要还原原来的点的编号,而题目条件里有一个。还是非常明显,发现我们可以搞出一排新的点让它们构成一条新的链。然后第\(i\)个点往原图中编号为\(u\)的点连边,满足\(u\&2^{i-1}\)。现在我们需要......
  • AI时代的职场变迁:适合普通人的5大副业兼职!
    前言最近和朋友小李聊起她的求职经历,她是做销售的,从年初开始投简历到现在,合适的面试机会居然不到5个。这让我大吃一惊,一直以为销售类的职位需求应该很大,但现实显然比想象中更严峻。就业市场的现状比我们想象的还要糟糕。尤其是最近武汉出现了不少萝卜车,出租车和滴滴司机的......
  • 程序员搞副业,AI代写助力开启赚钱新模式!
    前言目前AI技术发展迅速,已经渗透到了我们生活的方方面面。对于程序员来说,AI不仅是一项技术挑战,更是一个全新的赚钱机会。今天,我们就来聊聊如何利用AI+代写,轻松开启你的副业赚钱之旅。一、什么是AI+代写?AI+代写,顾名思义,就是利用人工智能技术进行代写服务。通过训练AI模型......