变量定义与变量声明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量定义与变量声明相关的知识,希望对你有一定的参考价值。

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。

实例程序:

//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;
	}
	}
	
	
	
	

运行结果:

技术分享



以上是关于变量定义与变量声明的主要内容,如果未能解决你的问题,请参考以下文章

变量定义与变量声明

在一些片段之间填充对象变量的最佳方法

Java 全局变量 声明与定义

定义与声明

Sass 变量的声明与使用

C:变量的声明与定义