【C++基础语法】指针和引用(一)

1. 指针

 

 

 

 

 

#include <iostream>

int main()
{
    int a{ 5000 };

    int* pa{ &a };

    //*pa = 66666;

    (*pa)++;
    //int* b{};

    unsigned b{64543};

    unsigned* pb{&b};

    //*pb = 34325;

    float c{ 53.6f };

    float* pc{ &c };

    double d{ 784.2 };

    double* pd{ &d };

    std::cout << "内存地址:" << pa << "\na =" << *pa << std::endl;

    std::cout << "内存地址:" << pb << "\nb =" << *pb << std::endl;

    std::cout << "内存地址:" << pc << "\nc =" << *pc << std::endl;

    std::cout << "内存地址:" << pd << "\nd =" << *pd << std::endl;

    //std::cout << b << std::endl;

    return 0;
}

2. 指针数组

#include <iostream>

int main()
{
    int student[5]{ 1001,1002,1003,1004,1005 };

    int* ptrstudent[5];

    for (int x = 0; x < 5; x++)
    {
        ptrstudent[x] = &student[x];

        std::cout << "内存地址:" << ptrstudent[x] << "\n值" << *ptrstudent[x] << std::endl;
    }

    return 0;
}

3. 指针补充

 

 

​​​​#include <iostream>

int main()
{
    unsigned ua{ 9999 };
    int a{ 9999 };

    int* ptr{ &a };
    long long* uptr{ (long long*) & ua};
    

    ptr = (int*) & ua;

    //int* ptr{};

    char* cptr{};

    *ptr = -1;//ox FF FF FF FF

    cptr = (char*)ptr;//    

    *cptr = 'A';//65 ox41 FF FF FF //OX FF FF FF 41

    // FF FF FF FF ua
    // 00 00 00 00 未知 (&ua) + 4

    std::cout << sizeof(ptr) << std::endl;

    std::cout << sizeof(cptr) << std::endl;

    std::cout << ptr << std::endl;

    std::cout << *ptr << std::endl;

    std::cout << *uptr << std::endl;

    std::cout << ua << std::endl;




    return 0;
}

 

4. 指针实验一

 

 

#include <iostream>

int main()
{
    int a[]{ 10001,20001,30001,40001 };
    int* ptr{ &a[0] };

    std::cout << ptr << std::endl;

    //ptr = ptr + 1;

    //std::cout << (*ptr) ++ << std::endl;
    //std::cout << ++ (*ptr)  << std::endl;


    std::cout << a[0] << std::endl;


    std::cout << *ptr++ << std::endl;//先显示*ptr的值 然后让ptr++

    std::cout << (*ptr) ++ << std::endl;

    std::cout << a[0] << std::endl;

    std::cout << ptr << std::endl;

    std::cout << &a[1] << std::endl;

    std::cout << *ptr << std::endl;

    //指针加1的时候 加的是 +1 * 指针类型大小
    //std::cout << *ptr++ << std::endl;

    return 0;
}

5. 指针实验二

 

#include <iostream>

int main()
{
    int a[]{ 10001,10002,10003,10004 };

    int* ptr{ &a[0] };

    int** pptr{ &ptr };

    *pptr = &a[1]; 


    std::cout << *ptr << std::endl;

    std::cout << **pptr << std::endl;

    

    return 0;
}

6. 绕晕的指针概念

6.1 常量指针

#include <iostream>

int main()
{
    const int a{ 1000 };
    const int b{ 2500 };
    int c{ 3500 };
    const int* ptr{ &a };

    ptr = &c;

    //指向可以改 指向的内容不可改
    //*ptr = 2000;

    std::cout << *ptr;

    //错误 a是常量 只能读取 不能写入
    
    //*ptr = 500;

    //a是常量  ptr是变量 
    

    return 0;
}

6.2 指针常量

#include <iostream>

int main()
{
    int a{ 1000 };
    int b{ 1000 };

    int* const ptr{ &a };

    std::cout << *ptr << std::endl;

    //ptr 是一个常量 不能修改
    //ptr = &b;

    //指针指向的内存空间可以修改
    *ptr = 9999;

    std::cout << a;
    

    return 0;
}

 6.3 指向常量的常量指针

#include <iostream>

int main()
{
    const int a{ 1000 };
    const int b{ 2400 };

    const int* const ptr{ &a };

    //ptr 被第二个const限定 指针变量是一个常量
    ptr = &b;

    //这是一个常量指针 指向的内容不可被更改
    *ptr = 9999;
    

    return 0;
}

#include <iostream>

int main()
{
    const int a{ 1000 };
    const int b{ 2400 };

    const int* const ptr{ &a };

    //定义一个新的指针 强制转换为int*
    int* ptra{  (int*) & a};
    
    *ptra = 9500;

    std::cout << *ptra << std::endl;

    std::cout << a << std::endl;


    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康康今天学习了么

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值