首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言經典程序開發實例集錦(五):static/auto/external/register 存儲類別與宏定義/條件編譯/頭文件綜合應用

     編輯:關於C語言

程序 41:static 靜態局部變量 vs 自動變量

void varfunc() {
    int var = 0;
    static int static_var = 0;
    printf("var=%d, static_var=%d\n", var, static_var);
    var++; static_var++;
}
main() { for(int i=0;i<3;i++) varfunc(); }
// 輸出:
// var=0, static_var=0
// var=0, static_var=1
// var=0, static_var=2

static_var 保留值,var 每次重置。

程序 42:auto 自動變量作用域

main() {
    int num = 2;
    for(int i=0;i<3;i++) {
        printf("outer num=%d\n", num++);
        { auto int num = 1; printf("inner num=%d\n", num++); }
    }
}
// 外層 num 遞增 2,3,4;內層每次重置為 1

程序 43:static 內部塊變量

main() {
    int num = 2;
    for(int i=0;i<3;i++) {
        printf("outer num=%d\n", num++);
        { static int num = 1; printf("inner num=%d\n", num++); }
    }
}
// 內層 static_num 遞增 1,2,3(僅初始化一次)

程序 44:external 外部變量


int a,b,c;
void add() { int a=3; c=a+b; }
main() { a=b=4; add(); printf("c=%d\n", c); }
// 全局 a,b=4;add 內部 a=3 局部遮蔽;c=3+4=7

程序 45:register 寄存器變量

main() {
    register int i;
    int tmp=0;
    for(i=1;i<=100;i++) tmp+=i;
    printf("sum=%d\n", tmp);
}

程序 46-48:宏定義三連發

// 46: 基礎宏與條件循環
#define TRUE 1
#define FALSE 0
#define SQ(x) (x)*(x)
// 輸入數字,輸出平方,<50 退出

// 47: 多語句宏(反斜槓換行)
#define exchange(a,b) { int t; t=a; a=b; b=t; }

// 48: 符號重定義宏
#define LAG >
#define SMA <
#define EQ ==
// 使用 if(i LAG j) 等

程序 49:條件編譯綜合應用


#define MAX
#define MAXIMUM(x,y) ((x>y)?x:y)
#define MINIMUM(x,y) ((x>y)?y:x)

main() {
    int a=10,b=20;
    #ifdef MAX    printf("max=%d\n", MAXIMUM(a,b)); #else printf("min=%d\n", MINIMUM(a,b)); #endif
    #ifndef MIN   printf("min=%d\n", MINIMUM(a,b)); #else printf("max=%d\n", MAXIMUM(a,b)); #endif
    #undef MAX
    #ifdef MAX    printf("max=%d\n", MAXIMUM(a,b)); #else printf("min=%d\n", MINIMUM(a,b)); #endif
    #define MIN
    #ifndef MIN   printf("min=%d\n", MINIMUM(a,b)); #else printf("max=%d\n", MAXIMUM(a,b)); #endif
}
// 輸出:max=20, min=10, min=10, max=20

程序 50:頭文件包含


// test.h
#define LAG >
#define SMA <
#define EQ ==

// 50.c
#include "test.h"
#include 
main() { int i=10,j=20; if(i LAG j) printf("%d>%d\n",i,j); ... }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved