一、const 关键字
在C与C++中,const关键字均将其所修饰的变量视为常量,但对于指针赋值中,C中允许将const指针赋给非const指针,C++中不允许const指针赋给非const指针。
举个例子:
1)在C语言中
int a = 5;
const *p = a;
int * q ;
q = p;
*q = 3;
printf("%d\n",*p);//*p的值被修改成了3 所以最终const限制了个寂寞
2)在C++中
int a = 5;
const *p = a;
int * q ;
q = p;//C++中这里不允许赋值,p是const指针,q是非const指针,所以无法赋值
*q = 3;
printf("%d\n",*p);
二、malloc 和 free 关键字
1)在C语言中,动态开辟内存使用的是malloc,回收内存用的则是free
int *a = malloc( sizeof(int) );
free(a);
2)在C++中,使用new关键字开辟内存,用delete关键字回收内存,同样,C++可以兼容C中的malloc和free关键字,但是更为严格,例如malloc返回的void*类型,在C++中需要强制转换才能使用,否则会报错。
char* ch = (char*)malloc(sizeof(char)); //强制类型转换
三、bool 类型
1)C语言中,不支持bool类型,一般利用返回值为 0 和 非0 来判断真假,也可以通过宏定义 #define 和 枚举类型 enum 来实现
#define FALSE 0
#define TRUE 1
typedef enum BOOL{
FALSE,TRUE
}Bool;
2)C++中提供了对bool类型的支持,bool 类型提供了 false 和 true 两种返回值
四、String
C语言中不支持String,一般需要用数组或动态开辟空间来存放字符,C++中提供了对于String的支持。
五、枚举 enum
C语言中的枚举enum 可以使用整形数值,即enum 类型中对应变量表示的数值内容
C++中不允许使用数值类型直接赋值枚举类型enum ,必须使用在enum定义的范围之内
#define FALSE 0
#define TRUE 1
typedef enum BOOL{
False,TRUE
}Bool;
Bool reselt = 1; //在C语言中,这是可以的,但是在C++中不允许
六、表达式
在C语言中,表达式可以赋值给变量,但是数值不能赋值给表达式
在C++中,以上C语言中的限制就不存在了
int a = 10;
int b = 10;
(a = b) = 100;//C语言中是不可以的
七、输入输出
C语言中使用Scanf,Printf进行输入输出
C++中使用Cin, Cout进行输入输出