美文网首页
C高阶2:变量作用域与生存期

C高阶2:变量作用域与生存期

作者: jdzhangxin | 来源:发表于2019-04-14 10:12 被阅读0次

变量的作用力和生存期相当于变量的"攻击范围"和"生命力"。

1. 作用域

1.1 作用域是什么?

在什么范围内可以访问这个变量。

1.2 作用域怎么用?

试一下下面的代码

#include <stdio.h>

int main(){
    int n =0;
    for(int i=0;i<10;++i){
       n += i;
    }
    printf("%d %d\n",i,n);
}
#include <stdio.h>

int main(){
    {
       int n =0;
       printf("%d\n",n);
    }
    printf("%d\n",n);
}
#include <stdio.h>

int main(){
    {
       int n =0;
       printf("%d\n",n);
    }
    {
       int n =10;
       printf("%d\n",n);
    }
}

局部变量作用域在变量定义的大括号以内。

2. 生存期

2.1 生存期是什么?

变量什么时候出现到什么时候灭亡。
对于局部变量,生存期与作用域一致。

2.2 生存期怎么用?

#include <stdio.h>
int* func(){
    int n=10;
    int* p = &n;
    return p;
}

int main() {
    int* p = func();
    // printf("p = %p\n",p);
    printf("*p = %d\n",*p);
    return 0;
}
#include <stdio.h>
void print_array(int arr[],int n){
    for(int i=0;i<n;++i){
        printf("%d ",arr[i]);
    }
    printf("\n");
}
int* scanf_array(int* n){
    scanf("%d",n);
    int arr[*n];
    for(int i=0;i<*n;++i){
        scanf("%d",&arr[i]);
    }
    return arr;
}
int main(){
    int n;
    int *arr = scanf_array(&n);
    print_array(arr,n);
}

不要返回局部变量的地址,不要返回局部变量的地址,不要返回局部变量的地址。

3. 同名隐藏

在相同作用域中,同名变量会报错;在不同的作用域中,内部变量会隐藏外部变量。

#include <stdio.h>
int main() {
    int n = 1;
    {
        printf("n = %d\n",n);
        int n=10;
        printf("n = %d\n",n);
        n = 20;
    }
    printf("n = %d\n",n);
    return 0;
}

相关文章

  • C高阶2:变量作用域与生存期

    变量的作用力和生存期相当于变量的"攻击范围"和"生命力"。 1. 作用域 1.1 作用域是什么? 在什么范围内可以...

  • 浓缩解读《JavaScript设计模式与开发实践》③

    三、闭包和高阶函数 3.1 闭包 3.1.1 变量的作用域 所谓变量的作用域,就是变量的有效范围。通过作用域的划分...

  • C语言学习08.作用域和生存期

    变量的作用域(scope):变量起作用或有效的代码范围,空间。变量的生存期(life time):变量存在的时间范...

  • 从 JavaScript 作用域说开去

    目录 1.静态作用域与动态作用域 2.变量的作用域 3.JavaScript 中变量的作用域 4.JavaScri...

  • C - 作用域

    C - 作用域 一个 C 变量的作用域可以是: 块作用域 函数作用域 函数原型作用域 或 文件作用域 作用域描述程...

  • PHP变量作用域

    变量作用域:1,全局作用域global,2,局部作用域,3,静态作用域 1,与js相似,变量写在函数以外叫做全局变...

  • JavaScript中的作用域和作用域链(一)

    作用域 1.作用域的概念: 变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。 2.全局作用域与...

  • JavaScript 函数

    函数函数定义与调用变量作用域全局变量方法高阶函数闭包箭头函数$generator$ 函数 函数定义与调用 定义函数...

  • C语言之内存讲解

    1 内存讲解 1.1 作用域 C语言变量的作用域分为:代码块、函数、文件作用域: 1.1.1 局部变量 局部变量(...

  • 什么是 全局变量 & 宏 & 大程序怎么写,看这一篇就够了

    全局变量 认识 全局变量 定义在函数外的变量就是全局变量 全局变量具有全局的生存期和作用域它们与任何函数无关任何函...

网友评论

      本文标题:C高阶2:变量作用域与生存期

      本文链接:https://www.haomeiwen.com/subject/bzrcyqtx.html