关于static 定义的对象系统默认初始值
2012-09-07 18:17
267 查看
在Charles Petzold第五版的《windows程序设计》中,看到这样一些代码:
#define DEVISIONS 5
static BOOL fstate[DEVISIONS][DEVISIONS];
........
if(x<DEVISIONS && y<DEVISIONS)
fstate[x][y]=fstate[x][y]^1;
一开始看到觉得很诧异,fstate[DEVISIONS][DEVISIONS]没有初始化啊,那怎样进行fstate[x][y]=fstate[x][y]^1啊?
经过查阅和验证才知道,static定义的变量如果没有给他们初始化和赋初值,系统会默认为0或者“/0”的。
验证如下:
(在VC++6.0Z中)
#include<stdio.h>
#include<windows.h>
int main()
{
static BOOL fstare[5][5];
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
printf("%d ",fstare[i][j]);
printf("\n");
}
return 0;
}
结果如下:
后来又验证了字符的,不过什么都没有输出,就空出5行,所以字符默认是"/0".
若删除static则会出现的都是乱码:
所以,遇到问题不要害怕和烦恼,自己查阅,自己验证。
相信问题一定会解决的。
#define DEVISIONS 5
static BOOL fstate[DEVISIONS][DEVISIONS];
........
if(x<DEVISIONS && y<DEVISIONS)
fstate[x][y]=fstate[x][y]^1;
一开始看到觉得很诧异,fstate[DEVISIONS][DEVISIONS]没有初始化啊,那怎样进行fstate[x][y]=fstate[x][y]^1啊?
经过查阅和验证才知道,static定义的变量如果没有给他们初始化和赋初值,系统会默认为0或者“/0”的。
验证如下:
(在VC++6.0Z中)
#include<stdio.h>
#include<windows.h>
int main()
{
static BOOL fstare[5][5];
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
printf("%d ",fstare[i][j]);
printf("\n");
}
return 0;
}
结果如下:
后来又验证了字符的,不过什么都没有输出,就空出5行,所以字符默认是"/0".
若删除static则会出现的都是乱码:
所以,遇到问题不要害怕和烦恼,自己查阅,自己验证。
相信问题一定会解决的。
相关文章推荐
- 定义长方体类,数据成员有长、宽、高,成员函数有带默认形参值的构造函数(默认长宽高分别为2.5、3.4、2)、计算体积函数,分别构造默认对象和长宽高分别为6.25、4.8、5.2的对象,输出各对象的体积
- java系统学习(五) --------java类和对象的定义
- 关于window系统“你没有权限查看或编辑这个对象的权限设置” 解决方案
- 关于javascript定义并初始化对象的几种方法
- Unity3D - 关于Static静态对象
- Python的坑(7) -- 定义默认参数要牢记一点:默认参数必须指向不变对象!
- 关于static函数在类中的定义和使用
- 关于C++默认形参定义的小问题
- 关于Cocos2d-x对象的定义和创建
- 关于Excel Spreadsheet 对象的属性的定义
- 关于C++/JAVA类中的static成员和对象成员的说法正确的是:
- ActionScript系统预定义对象详解
- 关于AIX下系统启动后IP地址与初始设置不同的解决!
- 有关于android mat分析中 系统默认加载的sPreloadedDrawables
- 关于const对象定义在头文件中
- 关于FLEX中找不到目标对象或通道未定义错误
- 关于const对象定义在头文件中
- [祥:]C++定义对象的时候调用默认的构造函数,各种形式
- VS 对象定义被隐藏(无法打开模块文件“C:...\.NETFramework,Verssion=v4.5.AssemblyAttributes.vb”系统找不到指定文件。)
- 【杂记--关于访问SQL SERVER2005 的系统对象】