例如 - 在下面的代码中,是一个指向自身的指针?
#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不是指向自身的指针,那么同样的问题再次出现:指针可以指向自身吗?另外,自指向指针有用吗?
答案 0 :(得分:1)
您的代码格式不正确,您的编译器应该给出错误。 a = b;
失败:int
无法隐式转换为int *
。
假设您修改它说:
int *a = (int *)&a;
然后可以说a
指向内存中a
本身存储的同一字节。但是,它会导致未定义的行为通过*a
进行读取或写入(严格别名冲突)。