未初始化的指针称为野生指针,因为它们指向某个任意的内存位置,并且可能导致程序崩溃或性能下降。
int main()
{
int *p; /* wild pointer */
/* Some unknown memory location is being corrupted.
This should never be done. */
*p = 12;
}
请注意,如果指针p指向已知变量,则它不是通配指针。在下面的程序中,p一直指向该指针,直到它指向a为止。
int main()
{
int *p; /* wild pointer */
int a = 10;
p = &a; /* p is not a wild pointer now*/
*p = 12; /* This is fine. Value of a is changed */
}
如果我们想要一个指向一个值(或一组值)的指针,而又没有该值的变量,则应该显式分配内存并将该值放入已分配的内存中。
int main()
{
int *p = (int *)malloc(sizeof(int));
*p = 12; /* This is fine (assuming malloc doesn't return NULL) */
}
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。