c语言基础知识:局部变量与全局变量

来源:互联网 发布:数据资产管理 编辑:程序博客网 时间:2024/05/20 18:18

局部变量:定义在一个函数内部,只在本函数范围内有效。

全局变量:在函数外定义,为本文件所有函数共用。

int p,q             整个程序中p,q均有效

int  f(a)

int a;

     int   b; 

     int   c;

 }                         只在 f()中a,b,c有效

float  f1(x)

    int i;

    int j;

  }                            只在 f1()中x,i,j有效

main()

    int m;

    int n;

 }                                  只在 main()中m,n有效

程序中p,q为全局变量;a,b,c,x,i,j,m,n均为局部变量。

如果全局变量和局部变量重名,则在局部变量有效的区域全局变量无效。

变量类型

一、动态存储

1.自动变量(auto):未加存储类型说明的均为自动变量,他的存储方式为动态存储,使用它时才为它分配存储空间,当调用结束,就释放存储单元,所以它的值不能保留。

2.寄存器变量(register):这个变量和其他不同,它是放在寄存器中,使用时直接从寄存器中读写,提高效率。

二、静态存储

3.外部变量(extern):在一个函数体中如果有extern int a;说明a变量已经在其它文件中定义,函数可以不用再次定义直接使用;

4.静态变量(static):生存周期为整个程序

例:

#include<stdio.h>

int func(int a)

{

    auto int b = 0;

    static int c = 3;

    b = b + 1;

    c = c + 1;

    return(a + b + c);

}

int main()

{

    int a = 2;


    int i;

    for(i = 0; i < 3; i++)

    {

        printf("%d",func(a));

    }

    printf("\n");

    return 0;

}


用gdb分步输出过后可看到b的值一直为1,c的值为4,5,6.程序运行结果为7,8,9.静态变量就好比每次在执行一次循环时把b的值重赋为零,它的值是固定的。

0 0
原创粉丝点击