C++入门

作者: 靈08_1024 | 来源:发表于2019-04-19 18:36 被阅读0次

    本文主要说一说在C++中的指针、地址、引用等。适用于小白菜鸟。

    指针与地址

    首先来了解指针与地址,参见如下代码:

    int main() {
    
        int num = 7;
        int *p = #
        cout << num << "-" << p << "-" << *p << endl;
    
        num = 8;
        cout << num << "-" << p << "-" << *p << endl;
    
        *p = 9;
        cout << num << "-" << p << "-" << *p << endl;
    
        int a = 11;
        p = &a;
        cout << num << "-" << p << "-" << *p << endl;
    
        return 0;
    }
    

    上面的代码输出为:

    7-0x61fe44-7
    8-0x61fe44-8
    9-0x61fe44-9
    9-0x61fe40-11

    第一行定义整形变量num=7,第二行将num变量的地址(&num)赋值给指针p(*p).
    此处不可直接用p接收&num,也不能*p接收num。可以这样理解:&是对地址的封箱——返回的是地址,*表示我要指向这个地址。
    接下来是对num和p的赋值,在给指针赋值时,需要使用*p,解析引用p对其地址上所存的值进行赋值,称为解引用

    小结一下:&num表示返回地址,*p表示:1)指针p;2)解引用.

    引用

    引用的示例代码如下:

    int main() {
    
        int num = 7;
        int &q = num;
        cout << num << "-" << q << "-" << &q << endl;
    
        q = 8;
        cout << num << "-" << q << "-" << &q << endl;
        
        return 0;
    }
    

    输出结果:

    7-7-0x61fe44
    8-8-0x61fe44

    从上面的指针与地址部分,我们了解到&num返回的是num的地址。在本例中&q表示q的地址,将num赋值给&q,表示将num的地址赋值给q。则此时num和q指向同一个地址。注意:此处不牵扯任何指针的知识。此时给q赋值8,则num也会跟着变。

    指针的指针

    int main() {
    
        int val = 7;
    
        int *p = &val;//val的地址赋值给指针p,即指针p指向val的地址
    
        int *q = p;//指针p赋值给指针q
    
        int **p2 = &p;//**声明一个指向指针的指针
    
        cout << *p << "-" << **p2 << "-" << *q << endl;
    
        return 0;
    }
    

    输出:

    7-7-7

    总结

    • *符号 一定 是在左边;
    • 带*初始化的变量,右边可以是以下情况:
      • 右边为单变量名时,该变量表示指针;
      • 右边为&变量名时,表示将右边变量名的地址给左边;
      • 右边一定不能是直接的new对象或者数字等直接的值。
    • 带&初始化的变量,右边只能是基本引用。即不含指针,也不能是直接的new对象或者数字等直接的值。

    如有不对,欢迎指正!

    相关文章

      网友评论

          本文标题:C++入门

          本文链接:https://www.haomeiwen.com/subject/tgqcgqtx.html