理解指针c ++

adi*_*dir 0 c++ pointers

当我写这段代码时:

Animal *p;
Animal b;
p = &b;
Run Code Online (Sandbox Code Playgroud)

在我创建指针的第一行.是创建Animal的新对象还是仅在编写第二行时?

谢谢.

CB *_*ley 9

当您声明指针[并且声明是定义]时,仅为指针分配空间,没有Animal创建对象.

如果不初始化指针,则不能以任何方式使用它,除非将其指向有效Animal对象或为其指定特殊的"空指针值"以指示指针未指向有效对象.你甚至无法测试它是否真的指向一个有效的Animal对象.

始终建议在创建指针时将指针初始化为null或有效对象,因此我建议:

Animal* p = 0; // or = NULL
Animal u;
p = &u;
Run Code Online (Sandbox Code Playgroud)

或更好:

Animal u;
Animal* p = &u;
Run Code Online (Sandbox Code Playgroud)


Mar*_*som 5

在第一行中,创建了一个指针,但它还没有指向任何东西.在第二行中,您将创建一个实际Animal对象.