续写 昨天玩出来的c++

作者在 2006-06-11 04:19:00 发布以下内容
接着刚才的说
关于枚举变量的赋值,我做了这样一个程序;

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

}

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

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

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


运行结果为:yes
说明之前的green使c=1
但如果改为这样就不行了
#include <iostream.h>
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;


以上是关于内存申请的一些东西,我也不知道这些玩意儿有什么用途,但是,先记着吧!




海啸南风 发表于:2006-1-19 11:07:08 [编辑] [精华] [删除] [
c++开拓 | 阅读 1628 次
文章评论,共0条
游客请输入验证码