C++第01课 C++与C的区别(三)

1.空的新表示法 指针上: NULL-->nullptr
2.bool类型
  2.1 含义:表示真和假,打印的值只有(0,1)
  2.2 占用1个字节
  2.3 一般用在 函数返回值或者充当标记开关等使用
3.引用类型: 起别名
  3.1 充当函数参数 防止拷贝本的产生
  3.2 充当函数返回值类型,增加左值使用
4.自动推断类型 auto

#include <iostream>
#include <stdlib.h>
using namespace std;
bool emptySize(int m_size)
{
    return m_size == 0;
}
void modifyC(int temp)  //int temp=num;
{
    temp = 1001;
}
void  modify(int& temp) //int& temp=num;
{
    temp = 1001;
}
int g_num = 9999;
void modifyPoint(int* &temp)  //int*  &temp= pNum
{
    temp = &g_num;
}
int returnNum() 
{
    return g_num;
}
//等效返回一个变量
//不能返回局部变量的引用
int& returnNum2() 
{
    return g_num;
}

void print(const int& data) 
{
    //错误 const 限定了,就不能修改形参
     //data = 1001;
    cout << data << endl;
}
//必须传入常量
void print2(int&& data) 
{
    //和上面的区别区别,在于函数中可以修改形参
    data *= 10;
    cout << data << endl;
}
//右值引用: 你给我一个常量,但是我可以把他当做变量用
void doingSomething(int&& num) 
{
    num *= 10;
    num -= 10;
    cout << "10块钱麻辣" << endl;
}
int Max(int a, int b) 
{
    return a > b ? a : b;
}

struct MM 
{
    int age;
    int num;
};

int main() 
{
    //1.指针 nullptr
    int* p = nullptr;
    //2.bool类型
    bool bNum = 'A';        //非零值表示成立
    cout << bNum << endl;    //1
    cout << sizeof(bNum) << endl;
    cout << emptySize(1) << endl;
    //了解即可
    cout << boolalpha << bNum << endl;
    cout << emptySize(1) << endl;
    //3.引用类型
    //3.1 左值引用
    int  张三 = 0;
    int& 小宝贝 = 张三;     //起别名 给张三起了一个别名叫做小宝贝
    小宝贝 = 1001;
    cout << 张三 << endl;
    int num = 1;
    modifyC(num);
    cout << num << endl;
    modify(num);          //1001
    cout << num << endl;    
    int* pNum = &num;        
    cout << *pNum << endl;      //1001
    modifyPoint(pNum);
    cout << *pNum << endl;   //9999
    //当做函数返回值
    //returnNum() = 100;
    returnNum2() = 1001;
    cout << g_num << endl;
    //3.2 右值引用
    //右值引用: 你给我一个常量,但是我可以把他当做变量用
    cout << "右值引用" << endl;  //把右值变成一个左值
    int&& m_num = 134;
    cout << m_num << endl;
    m_num = 1004;
    cout << m_num << endl;
    print(g_num);
    print(1);
    print2(2);
    //struct 和string下节课
    //C++数据的初始化方式 ()赋值单个数据
    int iNum(1);
    int iNum2{ 2 };
    cout << iNum << endl;
    cout << iNum2 << endl;
    char cNum{ 'A' };
    cout << cNum << endl;
    char name[20]{ "ILoveyou" }; //字符只能用大括号
    cout << name << endl;
    //auto 自动推断类型
    auto ii = 1;        //自动推断ii是int
    int (*pF)(int, int) = Max;
    auto pMax = Max;
    cout << pMax(1, 2) << endl;
    cout << pF(2, 3) << endl;

    auto pstr = "ILoveyou";      //const char*
    cout << pstr << endl;
    auto pMM = (struct MM*)malloc(sizeof(struct MM));
    if (pMM == NULL)
        return 0;
    pMM->age = 10;
    pMM->num = 20;
    cout << pMM->age << endl;
    cout << pMM->num << endl;


    return 0;
}

 

posted @ 2021-09-02 00:21  Creature_lurk  阅读(43)  评论(0)    收藏  举报