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