如果p
和temp
是两个指针变量,其中p
包含NULL
而temp
指向某个内存地址。
现在假设p = temp;
这意味着现在p
指向与temp
指向的地址相同的地址。
这是否意味着两个指针变量p
和temp
现在指向相同的内存地址?
答案 0 :(得分:5)
是的,两个指针变量可以指向同一个对象:
指针是包含C对象地址或空指针的对象。
多个指针可以指向同一个对象:
char *p, *q;
p = q = "a";
指针甚至可以指向自身:
void *p;
p = &p;
这是另一个带有单个元素的双向链接循环列表的示例:next
和prev
链接都指向同一位置,结构本身:
struct dlist {
struct dlist *prev, *next;
int value;
} list = { &list, &list, 0 };
答案 1 :(得分:2)
答案 2 :(得分:0)
是的两个指针变量可以指向相同的内存地址。
我们知道指针是一个包含相同数据类型地址的变量。请考虑C
中的以下示例#include<stdio.h>
int main() {
int a,*pointer1;
a = 10;
pointer1 = &a;
int *pointer2;
printf("\n Val : %d",*pointer1); //This contains address of the variable a - so accessing it with * prints its value - value of “a"
printf("\n Val : %d", *pointer2); //This contains some junk value - so accessing it with * causes segmentation fault - since there might not be memory address with that junk value
pointer2 = pointer1; //Now pointer1 reference i.e.; address value stored in pointer1 is made a copy and now both pointer1 and pointer2 will point to the same memory location
printf("\n Val : %d", *pointer2); //Now this would print the value of “a"
return -1;
}
这同样适用于链表地址。您的变量“p”和“temp”现在指向相同的内存地址!