C++复合类型-指针变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a740169405/article/details/79417208

使用以下的一个例子来记录指针变量的知识内容

#include <iostream>

int main() {

    // 定义一个变量 i, 并赋值为 0
    int i = 0;
    // 输出变量i的内存地址,0x7ffee9eec818
    std::cout << &i << std::endl;

    // 定义一个指针变量,不对该指针变量进行赋值
    int *p = 0;

    // 打印指针变量的地址,0x7ffee6725808
    std::cout << &p << std::endl;

    // 直接使用未初始化的指针变量会报错
    // Process finished with exit code 11
    // std::cout << *p << std::endl;

    // 定义一个引用变量,并赋值为指针对象p
    int *&m = p;

    // 把引用变量的地址打印出来,和指针变量的一致,0x7ffee6725808
    std::cout << &m << std::endl;

    // 为指针变量赋值
    p = &i;

    // 为引用变量所指向的指针变量所指向的整型变量 i 赋值
    *m = 222;
    // 输出整型变量 i 的值, 222
    std::cout << i << std::endl;

    // 定义一个指向指针变量的指针变量。
    int **k = &p;

    // 为整型变量 i 赋值
    **k = 333;
    // 输出整型变量 i 的值, 333
    std::cout << i << std::endl;

    // 定义一个指向指针变量类型的指针的引用变量
    int **&b = k;

    // 为整型变量 i 赋值
    **b = 444;
    // 输出整型变量 i 的值, 444
    std::cout << i << std::endl;

    // 定义一个void类型的指针变量
    void *x = &i;
    // 不能为void类型指针所指向的对象赋值,编译期会报错,因为不知道指针所指向的对象的类型是什么。
    // *x = 1;
    // 只能赋值给其他的void类型的指针变量
    void *y = x;
    // 不能赋值给其他类型的指针变量,编译期会报错。
    // p = x;
    // 不能取得void类型指针变量所指向的内容,编译期会报错。
    // std::cout << *x << std::endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/a740169405/article/details/79417208
今日推荐