c++开拓 »续写 昨天玩出来的c++
时间:2010-09-20 来源:云之迦楼罗
发表于:2006-1-19 11:07:08
接着刚才的说
关于枚举变量的赋值,我做了这样一个程序;
#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;
以上是关于内存申请的一些东西,我也不知道这些玩意儿有什么用途,但是,先记着吧!
关于枚举变量的赋值,我做了这样一个程序;
#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;
以上是关于内存申请的一些东西,我也不知道这些玩意儿有什么用途,但是,先记着吧!
相关阅读 更多 +