指针可以指向C中自身的内存地址吗?

msc*_*msc 4 c pointers memory-address

在以下代码中,指针指向其自己的内存地址.

#include <stdio.h>

int main() 
{
    void * ptr;
    ptr = &ptr;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果指针能够指向自己的内存地址,那会有意义吗?

Jac*_*oge 7

不,这没有意义.如果你能找到变量ptr,你可以做&ptr.它会给你与ptr的内容相同的结果.

此外,由于ptr只讲述自己的一些事情,无论如何它都是无用的.它不会为您的其他程序提供任何有意义的信息.

想想看,有一个例外.您可以使用ptr ==&ptr作为一种特殊值的情况,如NULL.所以,在这种情况下,我认为它很有用.

它的乐趣在于,在这种情况下,值&ptr作为一个特殊值是有意义的,而它作为某些东西的地址没有意义,就像NULL一样.


alk*_*alk 5

指针指向自己的内存地址

这是合法的.

它是否" 有意义 "100%取决于上下文,虽然" 主要是基于选项 ".