C语言中指针的地址与指针指向的地址有没有可能相同?如果有,请举一个例子;如果没有,请说明原因。
指针的地址指指针自身的存储地址
指针指向的地址指指针自身地址存储的值
这两个没啥相关性啊,你要相同就可以相同啊,比如
int a = 10;
int *p = NULL;
*p = (int)p;
强行将指针自身的地址存储到指针指向的地址,但感觉是很无聊的事情
没有的,指针变量也是一个变量。
在没定义前每个变量都有自己的家,
地址肯定也不一样。
当指针变量去朋友家溜达,肯定去的是朋友家,而不是自己家。地址也肯定不在一个家。
地址 和 值是两个不相关的东西。
你在01234 这个地址内存中,存了一个0x1234 的值,有什么不可以呢?
指针变量、变量都是变量的一种,都有两重属性,即自身的地址值和存储在变量中的数值。当定义两个变量时,其自身的地址值表示不同的内存空间地址,系统分配时不可能把两个不同变量分配在同一空间地址。将指针变量自身的地址作为值存储到指针里,这是可以实现的,也就是把指针指向自己,不会发挥任何作用。供参考:
#include <stdio.h>
int main()
{
int i = 10, * p = &i;
p = (int*)&p;
printf("p=%p,&p=%p,*p=%p,&i=%p", p, &p, *p, &i);
return 0;
}
一般情况下是不会一样的啊,指针你可以认为是一个新的变量,而你是用这个新的变量去指向一个数组的地址或者函数的地址,来方便表达