C++对于C的加强/以及三目运算符

目录

一.C语言和C++结构体的区别

 1.1区别一

1.2区别二

 二.数据类型与空间的关系

三.更严格的类型转换 (了解)

        1.c的类型转换要求比较松

        2. c++必须要求显示的类型转换

  四.三目运算符

4.1 关于赋值 

4.2c++和c在三目运算上的区别

4.3 左值和右值的概念


一.C语言和C++结构体的区别

        1.c语言定义结构体变量需要加上struct,c++中不需要

        2.c语言结构体只能定义成员变量,不能定义成员函数,c++可以定义成员变量,也可以定义成员函数。 

 1.1区别一

C语言定义结构体变量需要加上struct 如struct Maker c

//定义结构体及定义结构体数据类型
struct Maker{
    char name[64];
    int  age;
    
}
void text1(){

    Maker c;//c++定义结构体变量
    struct Maker C;//C语言定义结构体变量
}
int main()[

    text1();//调用
}

1.2区别二

c++的结构体内可以写函数

        如

        struct Maker2{

                int a;

                void func(){   //c++可以结构体内部写函数

                        cout<<"func"<<endl;

                }

        }

 二.数据类型与空间的关系

        

//定义结构体及定义结构体数据类型
struct Maker{
    char name[64];
    int  age;
    
}
void text1(){
    int; //定义一个数据类型,不分配空间
    int b; //开辟一个空间名字为b,大小由编译器决定
    int a = 10; //定义变量a并分配空间10
    Maker c;也会分配空间
}
int main()[

    text1();//调用
}

注意结构体数据类型和普通的数据类型一样如int是不开辟空间的

    int b; //开辟一个空间名字为b,大小由编译器决定
    int a = 10; //定义变量a并分配空间10

 

三.更严格的类型转换 (了解)

        1.c的类型转换要求比较松

        char*p = malloc(64); //c语言中这种隐式转换是可以的

        2. c++必须要求显示的类型转换

        char*p = (char*)malloc(64);

  四.三目运算符

        a>b?a:b //这句话的意思是若a>b成立时返回a,不成立返回b

4.1 关于赋值 

注意:只有空间/变量才能赋值,数值是不能赋值的

void text(){

        int a = 10;

        int b = 20;

        printf("%d\n",a>b?a:b); //这里返回 20

        (a>b?a:b)= 100;

        printf("b=%d\n",b); //这里会报错

        *(a>b?&a:&b)= 100;

        printf("b=%d\n",b); //这里就不会报错

}

        (a>b?a:b)= 100;

        printf("b=%d\n",b); //这里会报错

 这里报错的原因是(a>b?a:b),这个式子运算结果是20,20 = 100;100赋值给20会报错,因为只有空间和变量才能赋值

        *(a>b?&a:&b)= 100;

        printf("b=%d\n",b); //这里就不会报错

这里不会报错的原因是:  *(a>b?&a:&b),这个式子是用指针返回b的地址&b,用100对&b赋值就会将20更改为20

4.2c++和c在三目运算上的区别

void text(){

        int a = 10;

        int b = 20;

       (a>b?a:b)= 100;

        cout<<"a="<<a<<endl; //返回10

        cout<<"b="<<b<<endl; //返回100

}

 

c++三目运算与C不同的是,c++返回的是左值,是空间 ,所以100是可以对空间进行赋值的

4.3 左值和右值的概念

        左值:L表示Location,表示内存可以存值,是空间

        右值:R表示read,读的值

        如c语言三目运算符返回的是右值,c++返回的是左值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值