2

有什么问题:我只是想指向 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;
4

3 回答 3

14
WORKS:

int* p;
*p = 0;

没有!它似乎有效,但实际上是未定义的行为

声明int* whatever;会留下一个未初始化的指针。你不能取消引用它。

要初始化指针并将其指向的值设置为 0(在您的情况下):

int* p = new int(0);
于 2012-08-30T12:48:47.980 回答
5

要使用指针,该指针必须指向某物。所以有两个步骤:创建指针,并创建它指向的东西。

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
于 2012-08-30T12:59:22.540 回答
2

你没有为你的指针分配任何内存,所以你得到了未定义的行为。基本上这意味着任何事情都可能发生(包括它也会起作用的可能性)。

用于int something = new int(<initialization_value>);初始化指针。

于 2012-08-30T12:50:50.950 回答