Chinaunix首页 | 论坛 | 博客
  • 博客访问: 168422
  • 博文数量: 86
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 885
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-05 18:46
文章存档

2011年(4)

2010年(51)

2009年(10)

2008年(21)

我的朋友

分类: C/C++

2010-09-20 22:14:47

发表于:2006-1-19 11:07:08
接着刚才的说
关于枚举变量的赋值,我做了这样一个程序;

#include
void main()
{
 enum color{red,blue,green} c;
 int a;
 a=3;
 cout< c=(color)a;
 cout<<" "<  

}

程序的运行结果如下:
-858993460 3
同时在连接的时候,出现了一个warning:
warning C4700: local variable ''c'' used without having been initialized

正如warning所说,c在赋值前,他的值没有被初始化,所以那个很大的数字是随机出的。

另外,还有这个测试:
#include
void main()         
{
 enum color{red, green, blue};
 color c;
 c=green;
 if(c==1)
  cout<<"yes";
}


运行结果为:yes
说明之前的green使c=1
但如果改为这样就不行了
#include
void main()         
{
 enum color{red, green, blue};
 color c;
 c=1;
 if(c==1)      //或者if(c==green)
  cout<<"yes";
}


这样就出现错误了,正如之前说的,只能将整数强制转换以后才可以给枚举型变量赋值。

以上是我对枚举型的新认识,下面记录一些关于内存的申请与释放

在c语言中一般是同过malloc()和free()两个函数来进行内存申请和释放的(汗颜,学c语言的时候还真没注意过)
c++中可以使用c语言中的这两个函数,但c++中有一个更方便有效的运算符——
new 和 delete
用法如下:
(1)单个变量的内存申请与释放
int *dt;
dt=new int;    //申请一个内存空间,并由dt指向
……
delete dt;       //释放由dt指向的内存空间

上面的内存申请的空间是不确定的,为了在申请内存空间的同时为其赋初值,可采用如下方式:
       dt= new int(5);   //表示dt所指向的内存空间的初值为5,我在考虑为什么括号括的是5
      ……
       delete dt;

(2) 数组内存申请与释放
int *dt;
dt=new int[20];//dt指向20个整型元素的内存空间
……

delete []dt;

(3)在定义变量的同时申请内存。
char *ss=new char[80];//ss指向具有80个字符元素的内存空间
int *dt=new int[20];//dt指向具有20个整型元素的内存空间


在进行二维数组的内存空间申请与释放时,需要注意其写法。
错例:
      char *ss;
      ss=new char[10][80];

这样写将出现错误

正解:
    char (*ss)[80];
    ss=new char [10][80];
     ……
     delete[ ]ss;

对于多维数组的内存申请与释放的写法如下:
int a[n0][n1]……[n8];
应为:
int (*a)[n1]……[n8];
a=new int[n0][n1]……[n8];
……
delete [ ]a;


以上是关于内存申请的一些东西,我也不知道这些玩意儿有什么用途,但是,先记着吧!
阅读(378) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-21 16:17:37

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com