静态持续性、无链接性

至此,已经学习过了链接性分别为内部和外部、作用域为整个文件的变量。接下来学习静态持续变量家族中的第三个成员—无链接性的局部变量。它是如下创建的:将static限定符用于代码块中声明的变量前面。意味着虽然该变量只在代码块中使用,但是它在该代码块不处于活动状态时仍然存在。因此在调用两次函数之间,该变量的值不变。如果初始化了该变量,,则程序只在启动时进行这唯一的一次初始化。以后再调用函数时,将不会像自动变量那样再次被初始化。如下是演示示例:该程序统计每次键盘输入的字符总数,并把所有次数键盘输入的字符总数记录下来。

#include <iostream>
using namespace std;
const int SIZE=12;
void strCount(const char* str);

int main()
{
    char input[SIZE];
    char next;
    cout<<"Enter the line:\n";
    cin.get(input,SIZE);
    while (cin)
    {
        cin.get(next);
        while (next!='\n')
        {
            cin.get(next);
        }
        strCount(input);
        cout<<"Enter the next line (empty line to quit ):\n";
        cin.get(input,SIZE);
    }
    cout<<"Done \n";

    return 0;
}
void strCount(const char* str)
{
    static int sumCount=0;
    int count =0;
    cout<<"\""<<str<<"\"contains ";

    while(*str)
    {
        count++;
        str++;
    }
    sumCount+=count;

    cout<<count<<" characters.\n";
    cout<<sumCount<<" characters total.\n";
}

输出结果:
这里写图片描述

程序分析:该程序演示了一种处理行输入可能长于目标数组的方法,方法cin.get(input,SIZE);将一直读取输入,直到到达行尾或读取了SIZE-1个字符为止。他把换行符留在输入队列中。cin.get(next);读取行输入之后的字符。随后使用一个循环来丢弃余下的字符。该程序还利用了get(input,SIZE)读取空行将导致程序停止cin为false。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值