C++与C的不同(三)

2.9、枚举名,结构名和联合名都是类型名

C++语言中,枚举名,结构名和联合名都是类型名(及类名)。当实例变化时,不必在一个枚举名或结构名之前再加上enum,struct,union(class)。

enum  Traffic {red,green,yellow};

struct    String {

char * str;

int  length;    };

当实例化为变量时,可以使用

Traffic  light;

String  str1;

不必写为

enum  Traffic  light;

struct  String  str1;

匿名联合是可以在结构内定义没有名字的联合。

2.10 、C++语言的类型

C++类型完全包括了C的类型,C++新增了两个类型:

1)布尔类型:类型名bool,包括的数据ture和false,表达逻辑操作的结果。bool类型还可以作为函数的返回类型,表示条件测试的结果。true可以对应整数1,false对应整数0。不为0的整型数据对应true; 等于0的整型数据对应false。

2)抽象数据类型:类类型。

C++语言的类型有:

基本类型:bool,char,int,double等。

特殊类型:void。

用户定义类型:enum,数组,结构,联合

指针类型:type *。

抽象数据类型:类类型。

在C中,每个函数都有返回型。如果一个函数返回型缺省,那么,该函数的返回类型为整型。在C++中某些函数是不能有返回类型的,所以,C++语言中,只有在没有返回类型的函数前面,才没有类型。

2.11、类型转换

类型转换是一种类型的值转换为另一种类型的值。

1.隐式转换

隐式转换发生在下述情况:

1)混合运算:级别低的类型向级别高的类型转换。

2)将表达式的值赋给变量:表达式的值向变量类型的值转换。

3)实参向形参传值:实参的值向形参的值进行转换。

4)函数返回结果:返回的值向函数返回类型的值进行转换。     

2.显示类型转换

显示类型转换:C语言的方式为:

(类型名)表达式 或者 (类型名)  (表达式)

C++语言中,还提供了函数表示法:类型名(表达式)

注意:类型转换需要申请一个临时单元,将要转换的值先复制到临时单元,转换发生在临时单元中。例:

float fnum=5.8;

int  inum=int (fnum);

int (fnum)是一个表达式,结果为5;但fnum的值没有改变,仍是5.8。

对于复合类型(对类型有两个或两个以上限制的类型,如所有的指针类型)不能用函数表示法进行类型的转换,只能用C语言的强制转换表示法。例如:

int  num;

int * pnum=#

char * pc;

pc=(char *) pnum;

那么pc和pnum;指向的是同一个单元;从pnum的角度看,指向的是两个字节的一个整数,而从pc的角度看,指向的是字符数组。      

2.12 函数体内定义变量的位置

    C语言变量的定义只能放在函数的开头,即在第一条可执行语句之前,C++则允许在任意的位置定义变量。

void main()

{ int a[12];

for(int i=0;i<12;i++)

a[i]=i;

for(int j=0;j<12;j++)

cout<<a[j]<<endl;

}

2.13 局部变量和全局变量同时,仍然可以访问全局变量

    int a=2;

main()

{

int a=123;

printf(“%d %d\n”, a,::a);

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值