C++入门

2019-04-19  本文已影响0人  靈08_1024

本文主要说一说在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

总结

如有不对,欢迎指正!

上一篇下一篇

猜你喜欢

热点阅读