C++指针理解

一:指针是什么

    指针是一种变量,和int、char、float等一样,需要占用一定的内存

    例如:

    int变量:在32位机器上占用 4 个字节; 在64位上也是 4 个字节,存储的是整型数字

    int*指针变量:在32位机器上占用 4 个字节; 在64位上也是 8个字节,存储的是int变量的地址;

    所以,说到底,指针也是一种变量,只不过是存储地址的变量;

二:指针类型的含义

    一个指针变量存储了某个“字节”(注意是一个字节)的地址,通过指针能准确找到那个字节在在哪里;

在找到地址后怎么读取内存中的数据,就是指针类型的作用了;

    例如:

    

    int   a;
    int   *p1 = &a;
    char  *p2 = (char*)&a;
    p2[0] = 0x31;
    p2[1] = 0x32;
    p2[2] = 0x33;
    p2[3] = 0x34;
    //p2[4] = 0;
    float *p3 = (float*)&a;

    cout << "&a = " << &a << endl;
    cout << "p1 = " << p1 << endl;
    cout << "p2 = " << p2 << endl;
    cout << "p3 = " << p3 << endl;
    cout << "*p1 = " << *p1 << endl;
    cout << "*p2 = " << *p2 << endl;
    cout << "*p3 = " << *p3 << endl;

    可以看到p2出现乱码;

    解释:

    地址                数据

    0x008FF790, 0x31

    0x008FF791, 0x32

    0x008FF792, 0x33

    0x008FF793, 0x34

    0x008FF794, 未知

    ......................., 未知

所以从a的首地址开始一直往后读取,直到读取到‘\0’字符为止,但是从a的末地址之后数据是随机的,所以是乱码;

以上

    int*,会从地址开始,按照int方式读取数据;

    char*,会从地址开始,按照char方式读取数据;

      其他,类似;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值