開発環境 Microsoft Visual C++ 2010 Express (SP1)
実行環境 Microsoft Windows XP Home Edition (SP3)
プロジェクトの種類 Win32 コンソール アプリケーション
プロジェクト名 static
アプリケーションの種類 コンソール アプリケーション
追加のオプション 空のプロジェクト

static.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
void sub(void)
{
	static const char scac[] = "aaaaa";	// const staticとしても同じ
	static char sac[] = "static";
	static int si = 10;
	const char cac[] = "bbbbb";
	char ac[] = "auto";	// ポインタではない
	int i = 20;
	int ai[] = {si, i};	// static変数でなければ、初期化は定数でなくてもいい
 
	printf("scac = %p %s\n", scac, scac);
	printf("sac  = %p %s\n", sac, sac);
	printf("si   = %p %d\n", &si, si);
	printf("cac  = %p %s\n", cac, cac);
	printf("ac   = %p %s\n", ac, ac);
	printf("i    = %p %d\n", &i, i);
	printf("ai   = %p %d, %d\n", ai, ai[0], ai[1]);
 
	strcpy(sac, "STATIC");
	si++;
	strcpy(ac, "AUTO");
//	ac++;	// error C2105: '++' には左辺値が必要です。
	i++;
}
 
int main()
{
	sub();
	sub();
	return 0;
}
 

出力
scac = 00415838 aaaaa
sac  = 00417000 static
si   = 00417008 10
cac  = 0012FE84 bbbbb
ac   = 0012FE74 auto
i    = 0012FE68 20
ai   = 0012FE58 10, 20
scac = 00415838 aaaaa
sac  = 00417000 STATIC
si   = 00417008 11
cac  = 0012FE84 bbbbb
ac   = 0012FE74 auto
i    = 0012FE68 20
ai   = 0012FE58 11, 20
最終更新:2012年09月10日 21:54