变量定义与变量声明

1、看例子如下:

int tern=1;

main()

{

extern int tern;

......

这里tern 声明了两次,第一次声明为变量留出了存储空间。它构成了变量的定义。第二次声明只是告诉编译器使用先前定义的变量tern,因此不是一个定义。第一次声明称为定义声明,第二次声明称为引用声明,关键字extern表明该声明不是一个定义,因此它指示编译器参考其他地方。而且extern是一个引用声明,绝不是定义声明,所以不可用它进行定义操作。木有这种的操作的哦。

2、具有内部链接的静态变量

这种存储类的变量具有静态存储时期、文件作用域以及内部链接。通过使用存储类说明符static在所有函数外部进行定义。

static int svil=1;//具有内部链接的静态变量

int main(){

}

以前这类变量称为外部静态变量,但因为它具有内部链接,所以现在用 具有内部链接的静态变量来形容,普通的外部变量可以被程序的任一文件中所包含的函数使用,而具有内部链接的静态变量只可以被与他在同一文件中的函数使用。

3、存储类说明符

c语言中有5个作为存储类说明符的关键字。他们分别是:auto、register、static、extern以及typedef。

实例程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//parta.c 各种存储类
#include<stdio.h>
void  report_count();
void  accumulate ( int  k);
int  count=0; //文件作用域,外部链接
static  int  total=0;
int  main( void )
{
     int  value; //自动变量
     register  int  i ; //寄存器变量
     printf ( "enter a positive interger(0 to quit):" );
     while  ( scanf ( "%d" ,&value)==1 && value>0)
     {
         ++count; //使用文件作用域变量
         for (i=value;i>=0;i--)
             accumulate (i);
         printf ( "enter a positive interger(0 to quit):" );
     }
}
     
     
     void  report_count()
     {
     printf ( "loop excuted %d times\n" ,count);
     
     }
     void  accumulate( int  k){
     static  int  subtotal =0;
     if (k<=0){
     printf ( "loop cycle :%d\n" ,count);
     printf ( "subtotal: %d; total: %d\n" , subtotal,total);
     subtotal=0;
     
     }
     else {
     subtotal +=k;
     total+=k;
     }
     }
     
     
     
    

运行结果:

wKiom1mOoD2B8_rTAAAtkmw0qFE377.png




本文转自 lillian_trip 51CTO博客,原文链接:http://blog.51cto.com/xiaoqiaoya/1955744,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值