变量定义与变量声明

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

运行结果:

时间: 2024-10-13 03:43:35

变量定义与变量声明的相关文章

C++变量(C++变量定义、变量赋值、命名规则)

其实在前面的例子中已经多次用到了变量.在程序运行期间其值可以改变的量称为变量.一个变量应该有一个名字,并在内存中占据一定的存储单元,在该存储单元中存放变量的值.请注意区分变量名和变量值这两个不同的概念,见图2.6. 图2.6 变量名规则 先介绍标识符的概念.和其他高级语言一样,用来标识变量.符号常量.函数.数组.类型等实体名字的有效字符序列称为标识符(identifier).简单地说,标识符就是一个名字.变量名是标识符的一种,变量的名字必须遵循标识符的命名规则. C++规定标识符只能由字母.数字

Mysql储存过程2:变量定义与参数传递

#储存过程 中的变量定义 declare 变量名 类型 可选类型 -- 跟建表差不多 create procedure p() begin declare age int default(18); declare number int default 1; select age+number; end$ /* mysql> create procedure p() -> begin -> declare age int default(18); -> declare number

c++ 变量 定义 声明

我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益) 变量的声明有两种情况: 1.一种是需要建立存储空间的.例如:int a 在声明的时候就已经建立了存储空间. 2.另一种是不需要建立存储空间的. 例如:extern int a 其中变量a是在别的文件中定义的. 前者是“定义性声明(defining declaration)”或者称为“定义(definition

函数定义、函数声明、函数调用以及extern跨文件的变量引用

1.如果没有定义,只有声明和调用:编译时会报连接错误.undefined reference to `func_in_a'2.如果没有声明,只有定义和调用:编译时一般会报警告,极少数情况下不会报警告.但是最好加上声明.3.如果没有调用,只有定义和声明:编译时一般会报警告(有一个函数没有使用),有时不会报警告.这时候程序执行不会出错,只是你白白的写了几个函数,而没有使用浪费掉了而已. 实验:在一个项目的两个.c文件中,分别定义一个名字相同的函数,结果?编译报错 multiple definitio

变量定义和声明的差别(整理)

变量的声明有两种情况: 1.一种是须要建立存储空间的.比如:int a 在声明的时候就已经建立了存储空间. 2.还有一种是不须要建立存储空间的. 比如:extern int a 当中变量a是在别的文件里定义的. 声明是向编译器介绍名字--标识符.它告诉编译器"这个函数或变量在某处可找到,它的模样象什么". 而定义是说:"在这里建立变量"或"在这里建立函数".它为名字分配存储空间.不管定义的是函数还是变量,编译器都要为它们在定义点分配存储空间.对于

C语言变量声明问题——变量定义一定要放在所有执行语句/语句块的最前面吗?

报错信息:error C2065: 'salary' : undeclared identifier #include <stdio.h> void main(){ printf("我的成绩是100分!");//不使用变量 int salary;//使用变量 salary = 100; printf("我的成绩是%d分!",salary); return 0; } 问题根源:编译器问题——C89和C99 C89规定,在任何执行语句之前,在块的开头声明所有

声明变量&amp;定义变量

        从编译原理上来说,声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存.而定义就是分配了内存.这对于以关键字extern进行声明是一定成立的,而对声明格式"int a;"来说,则需要取决于编译器的具体取舍. 对于下面的两句代码: void func() { int a; // <C++ Prime>认为此是定义变量,然而我们此处认为这是声明 int b=1; // 定义整型变量b a=0; } 对于第一行代码,编译器不会做任何事,

JavaScript中函数函数的定义与变量的声明&lt;基础知识一&gt;

1.JavaScript中函数的三种构造方式 a.function createFun(){ } b.var createFun=function (){ } c.var createFun=new function("a","b","return a*b"); createFun(10,3); 2.JavaScript中变量的三种声明方式 a.var foo=value; b.window.foo=value; c.foo=value; //隐

php变量定义和使用

1不要求使用前定义 2在PHP种是声明变量必须是使用一个美元符号$后面跟变量来表示 如$a=100; $b="string" unset()函数释放指定变量 isset()函数检测变量是否设置 empty()函数检测一个变身是否为空 例子: <?php $var="";    //声明变量$var赋予一个空值 if(empty($var)) {echo '$var is either 0 or not set at all';} if(isset($var))