学习笔记9.5 动态变量与静态变量

#include <stdio.h>
void doubleValue()
{
    auto int autoNum=5;
    static int staticNum=5;

    autoNum=autoNum*2;
    staticNum=staticNum*2;               //每次调用都使用上一次结果

    printf("autoNum:%d,staticNum:%d\n",autoNum,staticNum);
}
int main()
{
    printf("第一次调用:\n");
    doubleValue();

    printf("第二次调用:\n");               
    doubleValue();

    printf("第三次调用:\n");
    doubleValue();

    return 0;
}

一、整体功能概述

这段 C 语言代码定义了一个函数 doubleValue,在这个函数中有一个自动存储类型的变量 autoNum 和一个静态存储类型的变量 staticNum。在 main 函数中,通过三次调用 doubleValue 函数,展示了自动变量和静态变量在多次函数调用中的不同行为。

二、具体代码分析

  1. #include <stdio.h>

    • 这是预处理指令,引入标准输入输出头文件。这个头文件包含了诸如 printf 等输入输出函数的声明,使得在后续的代码中可以使用这些函数。
  2. void doubleValue()

    • 定义了一个名为 doubleValue 的无返回值函数。这个函数在后续的代码中会被多次调用。
  3. auto int autoNum = 5; 和 static int staticNum = 5;

    • 在 doubleValue 函数内部,声明了两个变量。
    • autoNum 是自动存储类型的整数变量,初始值为 5。在 C 语言中,自动变量通常存储在栈上,它们的生命周期与所在的代码块相关。每次进入函数时,自动变量会被重新初始化。
    • staticNum 是静态存储类型的整数变量,也初始值为 5。静态变量在程序的整个生命周期内都存在,并且只在第一次初始化时赋值。在后续的函数调用中,静态变量会保留上一次的值。
  4. autoNum = autoNum * 2; 和 staticNum = staticNum * 2;

    • 这两行代码分别对 autoNum 和 staticNum 进行操作。
    • 对于 autoNum,它的值乘以 2 后重新赋值给自身。由于 autoNum 是自动变量,每次函数调用都会重新初始化,所以每次都是对初始值 5 进行操作后得到新值。
    • 对于 staticNum,同样将其值乘以 2。由于静态变量的特性,它会在上一次计算后的值基础上进行操作。
  5. printf("autoNum:%d,staticNum:%d\n", autoNum, staticNum);

    • 使用 printf 函数输出两个变量的值。格式字符串中 autoNum:%d,staticNum:%d 表示先输出 autoNum 的值,再输出逗号和空格,然后输出 staticNum 的值,最后换行。后面的参数列表中依次传入 autoNum 和 staticNum 的值。
  6. int main()

    • 定义了程序的入口函数 main,返回值为整数类型。
  7. printf("第一次调用:\n");doubleValue();printf("第二次调用:\n");doubleValue();printf("第三次调用:\n");doubleValue();

    • 在 main 函数中,首先输出提示信息 “第一次调用:”,然后调用 doubleValue 函数。接着输出提示信息 “第二次调用:”,再次调用 doubleValue 函数。最后输出提示信息 “第三次调用:”,第三次调用 doubleValue 函数。
  8. return 0;

    • main 函数返回 0,表示程序正常结束。

三、代码执行结果预期

每次调用 doubleValue 函数时,autoNum 的值会是 10(5 * 2),因为它每次都会重新初始化。而 staticNum 的值会在第一次调用时为 10(5 * 2),第二次调用时为 20(10 * 2),第三次调用时为 40(20 * 2)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值