ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【C语言】存储期和作用域

2022-07-26 01:31:09  阅读:140  来源: 互联网

标签:存储 fx 作用域 C语言 int printf ax


 

作用域:

//首先区分文件作用域和块作用域
//文件作用域需要使用include 头文件,或者extern 引用
//块作用域中的块指的是代码块,以花括号{}为标志
//1.在main函数中,首先调用print_x函数,此时,函数上面的x=700就是块作用域,打印出700
//2.printf函数中,此时的x=800具有块作用域,x=700具有文件作用域,因此打印出800
//3.在for循环中,x变量的块作用域就是for循环的{},因此x=800相对来说就是文件作用域,打印结果 0 100 200 300 400

#include <stdio.h>
int x = 700;
void print_x(void)
{
    printf("x=%d\n", x);
}

int main()
{
    int i;
    int x = 800;

    print_x();
    printf("x=%d\n", x);

    for (i = 0; i < 5; i++)
    {
        int x = i * 100;
        printf("x=%d\n", x);

    }
    printf("x=%d\n", x);
    return 0;
}

 

 

存储期:

//ax,fx是静态存储期,每次跳出main函数时,变量本身不会被销毁
//ax为自动存储期,只生存在{}里,每次调用才会激活,使用完后销毁
#include <stdio.h>
int fx;
void func(void)
{
    static int sx = 0;
    auto int ax = 0;

    printf("%3d%3d%3d\n", ax++, sx++, fx++);
}
int main()
{
    int i;

    puts("ax sx fx");
    puts("--------");
    for (i = 0; i < 10; i++)
    {
        func();
    }
    puts("--------");
    return 0;
}


//代码清单6-20
//变量的存储期即是它的寿命,分为两种:自动存储期和静态存储期
//静态存储期:static storage duration,使用static修饰变量
//----------main函数执行之前就初始化,在函数外出现或是被static修饰
//----------该对象默认初始化为0,且在程序结束时候才消失

//自动存储期:auto......,auto修饰(一般省略),生存期限为{}内
//----------int ax =0,初始化ax为0;int ax 初始化为不定值
#include <stdio.h>
int fx;
int main()
{
    static int sx;
    int ax;

    printf("ax = %d\n", ax);//不定值,有些编译器会报错
    printf("sx = %d\n", sx);//0
    printf("fx = %d\n", fx);//0
    return 0;
}

 

标签:存储,fx,作用域,C语言,int,printf,ax
来源: https://www.cnblogs.com/sdr900/p/16519404.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有