我很难理解指针

时间:2015-03-01 06:45:47

标签: c++ pointers

我正在尝试一些指针练习。 在a = b的代码末尾,我试图打印p指向的值和地址,这应该是 - &的地址。第二个2.但结果是空白的。可能是什么问题?

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char** argv)
{
    cout << "Hello World" << endl;

    int * p;
    *p = 22;
    //p=9;

    int a =1;
    int b = 2;

    //p = &a;

    //*p = 24;

    cout << p << " Pointer with no address to" << endl;
    cout << *p << endl;

    //pointer p saves the address of a in p
    p=&a;


    //should show the address of a
    cout << p << " Pointer with address to a" << endl;
    //should show the value of a
    cout << *p << endl;

    a=b;


    cout << p << endl;
    cout << *p ;

    return 0;
}

2 个答案:

答案 0 :(得分:1)

*p = 22 使p指向22号。

为此,您需要先在某处初始化该值22

int i = 22;

然后您可以p指向i

p = &i;

答案 1 :(得分:0)

取走*p = 22,取消注释第一个p=&a(删除第二个),它应该正常运行。


BTW,想一想指针 - 它通过第二个值的内存地址指向另一个值。

所以,*p = 22没有任何意义,没有指针有一个内存地址可以搞乱。 (您可能希望将其初始化为空指针 - int *p = NULL

一旦p=&a,这意味着变量p保存了a的内存地址。每次更改a时都无需重新分配。无论其中的价值如何,您都可以通过*p访问它。