如果指针变量与其值具有相同的地址,它是否真的指向自身?

时间:2015-10-27 03:56:28

标签: c pointers

例如 - 在下面的代码中,是一个指向自身的指针?

#include<stdio.h>  
int main(){    
    int* a;    
    int b = (int)&a;    
    a = b;    
    printf("address of a = %d\n", &a);    
    printf("  value of a = %d\n", a); 
}  

如果a不是指向自身的指针,那么同样的问题再次出现:指针可以指向自身吗?另外,自指向指针有用吗?

1 个答案:

答案 0 :(得分:1)

您的代码格式不正确,您的编译器应该给出错误。 a = b;失败:int无法隐式转换为int *

假设您修改它说:

int *a = (int *)&a;

然后可以说a指向内存中a本身存储的同一字节。但是,它会导致未定义的行为通过*a进行读取或写入(严格别名冲突)。