非程序员C++入门---1

本文详细介绍了C++中的变量存储分类与作用域概念,包括自动变量、静态变量、外部变量及寄存器变量的特点及其声明方式。此外,还讨论了这些变量的作用范围和生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四章 存储分类和作用域

1,存储分类符定义了变量在内存中的位置以及程序执行过程中变量的作

用时间即生命周期
2,作用域是指程序中变量能够活动的(active)程序段,在此段程序中,

变量可被存取

3,变量的存储分类符可能通过声明来显式地(explicity)定义,也可以通

过上下文隐式的定义(implicitly)
C++中的存储分类符
automatic
static
external
regisiter

自动
可省略
auto int a;
等价int a;
char b;
作用域 仅仅是该变量所在地程序块或该程序块内部的程序块

静态变量的声明

在变量声明语句前面加上关键字static
 同自动变量一样是局部的
区别
 当静态变量离开作用域时,它的值仍然保持不变或者说它具有粘


 当静态变量没有明确初始值时,会自动初始化为0或者空NULL

#include<iostream.h)

void sum(void)
main()
{
 static int j;
 sum();
 cout<<"Inside main(),j is "<<j<<"/n";
 sum();
 cout<<"Inside main(),j is "<<j<<"/n";
}
void sum(void)
{
 static int j;
 j=j+1;
 cout<<"Inside sum(),j is "<<j<<"/n";
}


外部变量的声明
特点
不同于静态变量和自动变量,它的作用域是全局,而不是局部
外部变量的值可以像静态变量一样可以保持
没有初始化时也会自动初始化为0或空NULL
#include<iostream.h>
int i;
void function_1(void);
void function_2(void);
main()
{
 cout<<"i inside main() is"<<I<<"/n";
 function_1(); 
}

void function_1(void)
{
 i=i+1;
 cout<<"i inside function_1() is"<<I<<"/n";
 function_2();
}

void function_2(void)
{
 i=i+1;
 cout<<"i inside function_2() is"<<I<<"/n";
}

说明,在函数内部使用外部变量可以使用extern来声明,
但是要指明的时一定要在外部变量引用前面进行extern声明
在如果想在引用之后声明,需要在main函数内部声明外部变量

寄存器变量的声明

优点 寄存器变量的使用能有利于缩减程序的大小,改进 程序的性能,因

为寄存器的操作比对内在的操作要快,
寄存器变量类似于自动变量,它也是局部变量,只在其作用域内生效 ,

时在其前面加上register

register int a;
register char b;

变量期间
是指变量分配存储空间的那段时间,

总结一下

静态变量和外部变量在整个程序期间内分配内存。
自动变量和寄存器变量只在它们所属的程序块或函数内部分配内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值