C++对C语言的增强

这篇博客探讨了C++如何在多个方面增强C语言,包括全局变量检测、函数检测与参数处理、类型转换检查、struct使用简化、bool类型的引入、三目运算符的扩展以及const常量的处理差异。C++的这些改进提升了代码的安全性和规范性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++对C语言的增强


1.全局变量检测增强


2.函数检测增强,参数类型增强,返回值检测增强,函数调用参数检测增强


3.类型转换检测增强


4.struct增强


    C语言使用必须加入struct关键字,C++可以不加
    

struct Person{
    int m_Age;
    void plusAge(){ m_Age++; }
}

void test04(){
    Person p1;
    p1.m_Age=10;
    p1.plusAge();
    cout<<p1.m_Age<<endl;//输出后为11
}

5.bool类型增强


C语言中没有boll类型 sizeof(bool)=1
bool非零就是1

6.三目运算符增强

    a=10,b=20;
    a>b?a:b=100;//b=100


    若C语言中想实现C++的写法:

    *(a>b?&a:&b)=100;
    printf("a=%d,b=%d\n",a,b);

7.const增强


C语言中修改const变量(用指针):

    const int m_A=10;//全局只读区受到保护不可修改
    void test07(){
        const int m_B=20;//伪常量,非真正常量
        
        int *p=(int *)&m_B;
        *p=200;
        printf("*p=%d,m_B=%d\n",*p,m_B);//200,200
        
        int arr[m_B];//不可以初始化
    }


下面看C++中:

    const int m_A=10;//全局只读区受到保护不可修改
    void test07(){
        const int m_B=20;//真正的常量
        
        int *p=(int *)&m_B;
        *p=200;
        cout<<"*p="<<*p<<",m_B="<<m_B<<endl;//200,20
        
        int arr[m_B];//可以初始化
    }

解释:
    C语言中const修饰的变量是伪常量,编译器会分配内存
    C++中不会分配内存,const int m_B=20;放符号表中

        int *p=(int *)&m_B;
        *p=200;


        编译器会临时开辟一块内存空间

        int tmp=m_B;//tmp有内存
        int *p=(int *)&tmp;//*p指向的是临时那块空间


        临时空间看不到
        
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值