c++和c的注意点和不同点:
1.所有变量的声明C++在使用处声明,而C需要在函数开始声明。例如:for(int i=0;i<10;i++)//C语言中是错误的
2.对用宏定义C++可以多行,而C很多编译器不支持多行,即不支持/符号。
3.C++支持更为丰富的类型转化方式,而C只能做强制类型转化。
4.C++对const的使用十分广泛且有效,而C对const使用受到限制,如无法用在中间变量声明。
5、C、C++数组初始化:
Int a[5] = {0}; 将全部元素初始化为0,而
Int b[5] = {1}; 仅仅将第一个元素初始化为1,而将其余n-1个元素初始化为0;
Int c[] = {1,2,3,4,5};自动使得数组长度为5.
一维数组初始化:
char data[]={'a','b','c','d','e'};
二维数组初始化:
char data[][4]={{'a','b'},{'1'},{'2'},{'3'}};
二维字符串数组初始化:
const char* BCDCode[] = {"0000","0001","0010", "0011","0100","0101","0110","0111","1000","1001","1010"};
[]要在变量BCDCode后面,而Java可以在BCDCode前面和后面
6、C++函数中值的传递方式
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference)
void fun(char c) //pass by value
void fun(char *str) //pass by pointer
void fun(char &str) //pass by reference
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构
函数的类型不能省略,就算没有也要加个void
7.在C++中,struct结构体支持成员函数的定义,C中不行。
另外要注意的是,C++中成员函数的默认访问说明符为public,这一点和类不同,类的默认访问说明符为private。
在定义结构体变量时,C中必须使用struct关键字,而C++不需要。
8. C++中增加了基本数据类型bool(或boolean类型);C中没有这样的bool类型,均为数值类型!
需要注意的是真为非零(如:1,52,-2等),假的数值为0。
9. 注释的不同: C中的注释只有一种 /*......*/; C++中的注释包含多行注释“/*......*/”和单行“//”两种。
10. 强制数据类型装换:C中的强制转化形式为:(类型)变量; C++中还可以使用:类型(变量)的形式。
例如:(int)a;或写成:int(a); C++中都可以。
11. 初始赋值: C语言中的赋值只有一中(复合赋值除外),
即:“=”; C++中除了使用“=”外,还可以使用()。•例如:int x(5);等效于: int x=5;
12. 函数:C语言中函数没有参数默认值和函数重载,在C++中函数有,注意参数默认值与函数重载的区别。
13.运算符&和关键字const: &运算符最基本的含义是取地址,C和C++中都支持这一语法。但在C++中&还可以表示引用。
有了引用的概念后函数调用可以作为左值。例如:• int &rtux() { ...... }• rtux()=5;• 以上表达式在C++中完全正确,
但在C语言中是非法的。•在C++的类函数中,函数可以声名是可以用const,表示这个函数没有改变类中的任何属性。如:void Print()const;C不能有这样的声明。
14. void指针:在C语言中void指针可以赋给任何类型的指针,但在C++中,却不行,但可以先进行强制数据类型转换,再赋值。
例如:•int *p; void *q=NULL; p=q; //C中允许•int *p; void *q=NULL; p=(int*)q; //C++中必须强制转换
15.c++引入了面向对象的概念,类和对象在才c中没有。