C++对C的一些增强

  1. 全局变量检测增强
    int a;
    int a=10;//C下不报错,C++会报错重定义
  2. 函数检测增强
    函数返回值类型检测
    形参类型检测
    是否有返回值检测
    调用的时候参数传参个数检测增强
//test.c
//1.函数增强检测 ,可以不写返回值类型
getSum(int length,int width)
{
return length*width;
}
//2.函数增强检测 ,可以不写形参类型
getSum(length,width)
{
return length*width;
}
//3.函数增强检测 ,可以不写return语句
int getSum(length,width)
{
}
//4.这样调用不报错
int main(){
	getSum(10,20,30);
}
  1. 类型检测增强
    char *p=malloc(888);//C++会报错
    char *p=(char *)malloc(888);//C++应该这样写
  2. struct增强
    C++:可以在函数内定义结构体
    C++:使用时可以省去关键字struct
  3. bool类型增强
    C语言没有bool类型
  4. 三目运算符增强
    C返回—值
    C++返回—变量
//.c
int a=2,b=1;
a>b:a?b=100;//C语言下报错
printf("%d",b);
//如果想实现,可以这样做
*(a>b:&a?&b)=100;



//.cpp
int a=2,b=1;
a>b:a?b=100;
printf("%d",b);//b=100
  1. const增强
// test.c
const int a=100;//全局const
int main(){
	int *p=&a;
	*p=200;//在C语言下编译通过,但是运行时候会报错
}
// test.c
int main(){
	const int a=100;//局部const
	int *p=&a;
	*p=200;//在C语言下成功运行,修改成功
}

//test.cpp
const int a=100;//全局const,常量区保护,即使语法通过,运行阶段也会报错
int main(){
	//int *p=&a;//报错,因为a有const
	int *p=(int *)&a;
	*p=200;//在C++语言下编译通过,但是运行时候会报错
	return 0;
}

//test.cpp
int main(){
	const int a=100;//局部变量
	//int *p=&a;//报错,因为a有const
	int *p=(int *)&a;
	*p=200;//在C++下编译和运行时都不报错,但是无法修改a的值
	return 0;
}

//改不了原因是:编译器产生临时变量,改的是temp的值
int *p=(int *)&a;
//其实是int temp=a;
//p=&temp;

const修饰全局变量在C语言下默认是外部链接属性。(不加头文件,别的.c文件用extern也能使用)
在C++下是内部链接属性,想提高加extern关键字(别的.cpp文件用extern不能使用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值