我正在尝试一些指针练习。 在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;
}
答案 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
访问它。