【发布时间】:2020-07-10 07:58:13
【问题描述】:
当我定义一个指针而不初始化它时:
int *pi;
它指向内存的随机部分。
当我定义一个指向指针而不初始化它的指针时会发生什么?
int **ppi;
它指向哪里?它应该指向另一个指针,但我没有定义它,所以它可能指向内存的随机部分?如果可能的话,你能用一个例子来说明一下不同之处吗?
【问题讨论】:
-
它指向一个随机地址,与指针类型无关。
-
C 中任何未初始化的非静态变量都会有未确定的内容。由于
pi和ppi是指针变量,它们的内容代表内存中的地址。所以,它们的值是不确定的,这些值基本上是内存中的随机地址。底层指针类型将决定如何解释这些地址所指向的内容,但这并不会改变这些只是内存中位置的事实。 -
让我建议避免使用“随机”这个词来形容这种事情。一个未初始化的指针指向一个任意内存位置。它(可能)根本不是随机的。在某些系统上,它更可能是位置零而不是其他任何东西。其他一些系统可能会用一些可识别的模式填充其他未初始化的内存。
标签: c pointers initialization declaration