• 全局变量检测增强
int a;
int a = 10;

上面的代码在C语言中不会检测出重定义,在C++代码中会检测出,代码会报错

  • 函数检测增强
int area(w,h){}

上面的代码在C语言中只是警告,在C++中需要加上参数类型和返回值,否则会报错,正确的写法是下面的代码

int area(int w,int h){
	return w*h;
}

另外,C语言中参数个数传递错误不会报错,C++会检测出错误

  • 类型转换增强
int main() {
    int *p;
    int *x;
    p = malloc(sizeof(int));//在C++中会报错,需要强转成int*
    x = (int *) malloc(sizeof(int));
    cout << p << endl;//0x1031760
    cout << x << endl;//0x1031780
    /*
     * malloc函数
     * 找一片指定大小的空间,然后将这个空间的首地址范围给一个指针变量
     * malloc的返回值是void*,可以指向任意类型,类型需要强制类型转换
     * 这里强转成int类型的指针
     */
    return 0;
}
  • 结构体增强
struct Person {
    int m_age;
    void plus_age(){ age++; }//C语言中结构体不能加函数,C++可以
};
int main() {
    struct Person p1;//C语言使用的时候必须加入struct关键字,C++可以不写
    Person p2;
    return 0;
}
  • bool类型增强 C语言中没有bool类型,C++有bool类型,并且bool类型的值可以赋为int类型,非0代表真,0代表假
bool flag;
  • 三目运算符增强
int main(){
	int a=10,b=20;
    cout << (a>b ? a:b) << endl;//20
    return 0;
}

另外,看一下下面的代码

a>b ? a:b = 100;

这行代码C语言编译报错,C++ 不会,区别在于C语言返回值,相当于20=100,C++ 返回变量,相当于a或b=100,注意要加上小括号,否则只有b有资格被赋值