有什么问题:我只是想指向 int 的指针并将该 int 值设为 0。
int* p;int* q;
*p = 0; *q = 0;
cout<<"p = "<<*p<<" q = "<<*q<<endl;
这很烦人
作品:
int* p;
*p = 0;
cout<<*p<<endl;
崩溃:
int* p;
int* q;
*p = 0;
*q = 0;
cout<<*p<<endl;
有什么问题:我只是想指向 int 的指针并将该 int 值设为 0。
int* p;int* q;
*p = 0; *q = 0;
cout<<"p = "<<*p<<" q = "<<*q<<endl;
这很烦人
作品:
int* p;
*p = 0;
cout<<*p<<endl;
崩溃:
int* p;
int* q;
*p = 0;
*q = 0;
cout<<*p<<endl;
WORKS:
int* p;
*p = 0;
没有!它似乎有效,但实际上是未定义的行为。
声明int* whatever;
会留下一个未初始化的指针。你不能取消引用它。
要初始化指针并将其指向的值设置为 0(在您的情况下):
int* p = new int(0);
要使用指针,该指针必须指向某物。所以有两个步骤:创建指针,并创建它指向的东西。
int *p, *q; // create two pointers
int a; // create something to point to
p = &a; // make p point to a
*p = 0; // set a to 0
q = new int; // make q point to allocated memory
*q = 0; // set allocated memory to 0
你没有为你的指针分配任何内存,所以你得到了未定义的行为。基本上这意味着任何事情都可能发生(包括它也会起作用的可能性)。
用于int something = new int(<initialization_value>);
初始化指针。