C primer plus第12章(存储类、链接和内存管理)

parta.c

#include <stdio.h>
#include <stdlib.h>
void report_count();
void accumulate(int k);
int count = 0;//文件作用域,外部链接(在整个项目生效)
int main(void)
{
    int value;//自动变量(代码块内生效)
    register int i;//寄存器变量(代码块内生效)

    printf("Enter a positive integer (0 to quit):\n");
    while(scanf("%d",&value) == 1 && value > 0)
    {
        ++count;//使用文件作用域变量
        for(i = value; i >= 0; i--)
            accumulate(i);
        printf("Enter a positive integer (0 to quit):");
    }
    report_count();
    return 0;
}

void report_count()
{
    printf("Loop executed %d times\n",count);
}

partb.c

#include <stdio.h>
#include <stdlib.h>
extern int count;//引用声明,外部链接(parta.c中的count)

static int total=0;//静态定义,内部链接(只在本文件中生效)
void accumulate(int k);//原型
void accumulate(int k)//k具有代码块作用域。空链接
{
    //extern int count;可以再次声明引用
    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;

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值