两个指针变量可以指向相同的内存地址吗?

时间:2016-12-04 14:04:36

标签: c data-structures linked-list

如果ptemp是两个指针变量,其中p包含NULLtemp指向某个内存地址。

现在假设p = temp;

这意味着现在p指向与temp指向的地址相同的地址。

这是否意味着两个指针变量ptemp现在指向相同的内存地址?

3 个答案:

答案 0 :(得分:5)

是的,两个指针变量可以指向同一个对象:

指针是包含C对象地址或空指针的对象。

  • 多个指针可以指向同一个对象:

    char *p, *q;
    p = q = "a";
    
  • 指针甚至可以指向自身:

    void *p;
    p = &p;
    
  • 这是另一个带有单个元素的双向链接循环列表的示例:nextprev链接都指向同一位置,结构本身:

    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”现在指向相同的内存地址!