您的位置:首页 > 编程语言 > C语言/C++

c语言中关于变量存储类别的心得

2015-05-05 10:58 204 查看
<span style="font-family: 'Microsoft Yahei', 'Hiragino Sans GB', Helvetica, 'Helvetica Neue', 微软雅黑, Tahoma, Arial, sans-serif; line-height: 20.7999992370605px; background-color: rgb(226, 228, 235);">C语言中存储类别可以分为四类:自动(auto)、静态(static)、寄存器的(register)和外部的(extern)。</span>


1.首先是auto,用它定义的自动变量,可省略,例如
 auto int a=int a       

2.static为修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量,比如以下代码:

#include <stdio.h>
void fn()
{
    static int x=0;
    x++;
    printf("fn:x=%d\n",x);
}
int main()
{
    int i;
    for(i=0;i<10;i++)
    {
        fn();
    }
<span style="color:#1f2426;font-family: Arial, Helvetica, sans-serif;">}</span>
<span style="color:#1f2426;font-family: Arial, Helvetica, sans-serif;">输出的结果是1 2 3 4····    如果去掉static,则结果为1 1 1 1···  所以静态变量</span><span style="font-family: 'Microsoft Yahei', 'Hiragino Sans GB', Helvetica, 'Helvetica Neue', 微软雅黑, Tahoma, Arial, sans-serif; font-size: 13px; line-height: 20.7999992370605px; background-color: rgb(226, 228, 235);">在</span><span style="color:#ff0000;font-family: Arial, Helvetica, sans-serif;"><strong><span style="font-family: 'Microsoft Yahei', 'Hiragino Sans GB', Helvetica, 'Helvetica Neue', 微软雅黑, Tahoma, Arial, sans-serif; font-size: 13px; line-height: 20.7999992370605px; background-color: rgb(226, 228, 235);">编译时赋初值,即</span><span style="font-family: 'Microsoft Yahei', 'Hiragino Sans GB', Helvetica, 'Helvetica Neue', 微软雅黑, Tahoma, Arial, sans-serif; font-size: 13px; line-height: 20.7999992370605px; background-color: rgb(226, 228, 235);">只赋初值一次</span></strong></span>


3.用extern声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。如:

#include <stdio.h>
void fn()
{
static int x = 1;   //定义静态局部变量
x*=2;
printf("x=%d\n",x);
}

int main()
{
int i;
for(i=0;i<5;i++)
{
fn();
}
extern int x;      //调用外部变量
printf("x=%d\n",x);
return 0;
}
int x=100;
此程序输出结果为2 4 8 16 32 100,若去掉static,则输出结果为2 2 2 2 2 100,若去掉extern,则输出结果为2 4 8 16 32 0.
 ps:最后一组结果在code::blocks上输出为2 4 6 8 32 40,不知道为什么,先就到这里吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: