【自用】C语言初级入门7(下)

局部变量:在函数内部或复合语句内部定义的变量称为局部变量,又称内部变量,其作用域是从定义变量的位置开始到函数或复合语句结束,在作用域之外,变量不能使用

写一个简单的例子。

float f1(int x) //局部变量x生效
{                           
  int a,b;  //局部变量a和b生效
  if (a<b)
  {
    int t;  //局部变量t生效
    t=a; a=b; b=t;
  }  //局部变量t失效
  ···
}  //局部变量x、a和b失效
int main()
{
  int n,m;  //局部变量n和m生效
  ···
}  //局部变量n和m失效

全局变量:在函数外部定义的变量称为全局变量,又称外部变量,其作用域是从定义变量的位置开始到本源程序文件结束

写一个简单的例子。

int x = 1;y = 2; //全局变量 x 和 y 生效
int f1(int a)
{
  ···
}
char c1,c2;  //全局变量 c1 和 c2 生效
void f2(int s)
{
  ···
}
int main()
{
  ···
}
/*以下若仍有函数,全局变量 x、y、c1 和 c2 仍有效*/

值得注意的是,在函数中若局部变量与全局变量同名,则函数中与局部变量同名的全局变量将被屏蔽,函数调用的将是局部变量

写一个简单的例子。


输出结果。


变量具有多种属性,除了数据类型等属性以外,还有一个属性,就是存储类型。

变量完整的定义形式如下:

存储类型  数据类型  变量名; 

在C语言中,存储类型有4种:auto(自动)、static(静态)、register(寄存器)、extern(外部)。 


局部变量的存储类型

自动变量

在定义变量时,如果声明存储类型为auto,那么所定义的变量为自动变量。关键字auto允许省略,C语言将其作为默认的存储类型,即定义局部变量时,未特别声明变明存储类型的都是自动变量。

如果定义自动变量时未赋初值,它的值是不确定的,是随机数。

自动变量赋初值是在函数调用时进行的,每调用一次函数赋一次初值

静态变量

在定义变量时,如果声明存储类型为static,那么所定义的变量为静态变量。

如果定义静态变量时未赋初值,对于数值型变量,系统自动赋值0;对于字符型变量,自动赋值'\0'

静态变量在编译时赋初值,因此只赋一次初值,以后每次调用函数时不在重新赋初值,而是使用上一次函数调用结束时的值。

写一个简单的例子。

#include <stdio.h>

void test() {
	auto a = 0;              //定义自动存储类型变量a
	static int b = 3;         //定义静态存储类型变量b
	a++;
	b++;
	printf("a=%d,b=%d\n", a, b);       //输出a和b
}

int main() {
	test(); //调用test函数
	test();
	test();
	return 0;
}

输出结果。

寄存器变量

在定义变量时,如果声明存储类型为register,那么所定义的变量为寄存器变量。

为提高效率,允许把程序中频繁使用的变量放在CPU的寄存器中,这种变量就是寄存器变量。


全局变量

如果定义全局变量未赋初值,对于数值型变量,系统自动赋值0;对于字符型变量,自动赋值'\0'

用于声明全局变量的存储类型的关键字时extern和static。

写一个简单的例子说明extern。

#include <stdio.h>

int main() {
	extern int x, y;
	printf("x=%d,y=%d", x, y);
	return 0;
}
int x = 1, y = 2;

 输出结果。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值