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);

}

发布了208 篇原创文章 · 获赞 30 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hopegrace/article/details/104265322