为什么同一个指针的地址不同?

JPPPP

我在 C++ 上尝试链表,当我尝试打印列表的数据时,它给出了有趣的结果,告诉我列表为空。当我在 main 中打印变量的地址并在函数中打印同一变量的参数地址时,它会给出不同的结果。谁能帮我解释一下,谢谢!这是代码:

#include <iostream>
using namespace std;

typedef struct link_node{
    int data;
    link_node* next;
};

void iter(link_node* head){
    link_node* cur = head;
    cout<<"The address of head in function: "<<&head<<endl;
    while(cur!=NULL){
        cur = cur->next;
        cout<<cur->data<<' ';        
    }
}

link_node *create(int a){
    link_node* head;
    link_node* cur;
    head =(link_node*) malloc(sizeof(link_node));
    cur = head;
    for(int i=a;i<a+10;i+=2){
        link_node * node = (link_node*) malloc(sizeof(link_node));
        node->data = i;
        cur->next = node;
        cur = node;
    }
    cur->next = NULL;
    return head;
}

int main(){
    link_node* head_1 = create(0);
    link_node* head_2 = create(1);
    link_node* result = (link_node*) malloc(sizeof(link_node));
    cout<<"The address of head_1: "<<&head_1<<endl;
    iter(head_1);

    return 0;    
}

这是程序的输出:

The address of head_1: 0x61ff04
The address of head in function: 0x61fef0
0 2 4 6 8

谢谢!

约翰

headhead_1是两个不同的变量,所以它们有两个不同的地址。但是这些变量的也是地址(或指针),并且这些值是相同的。

在处理指针时,很容易混淆变量的地址和变量的值,因为它们都是指针(但指针类型不同)。

换句话说,所有变量都有地址,但只有指针变量的值也是地址。

试试这个代码

cout<<"The value of the head pointer: "<<head<<endl;

cout<<"The value of the head_1 pointer: "<<head_1<<endl;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

虽然哈希值是不同的,为什么仍然存储在同一个位置我的对象?

为什么同一个JAR文件,每次我建造它的时候有不同的hash?

为什么对同一个向量的两个引用为向量的每个元素返回不同的内存地址?

为什么同一个程序在Windows上与Mac上运行的方式不同

为什么两个绑定到同一个函数会返回不同的值

为什么同一个地址返回不同的值?

在同一个集合的不同属性上使用equals不会返回记录,为什么?

为什么numpy从同一个随机状态返回不同的随机数?

为什么对于具有不同库的同一个wav文件,我得到的采样率不同?

为什么同一个磁盘读取测试结果如此不同

为什么同一个ajax调用有不同的请求头?

为什么`view.scope_name(view.sel()[0].b)` 对于同一个文档是不同的?

为什么这个 javascript 函数为同一个查询返回两个不同的结果?

为什么类模板中的成员函数在同一个地址创建同一个对象

为什么指向同一个内存的多个共享指针会导致内存泄漏?

为什么我从同一个神经网络模型得到不同的预测?

为什么elasticsearch 对不同索引的同一个查询返回的结果差别太大?

C 指针不显示到同一个地址?*pa=a; pa=&a; pa != &pa

打印同一个数组,在不同的函数中是不同的,为什么呢?

为什么 MySQL View 和同一个 View 的底层 SELECT 查询返回不同的结果?

为什么运行同一个程序需要不同的时间?

为什么从同一个包创建不同的对象

为什么我从同一个查询中得到两个不同的结果

C中指向同一个地址的两个不同的指针

为什么同一个事件识别不同的activeElements?

C - 我从同一个变量得到两个不同的指针

为什么连接到同一个 HBA 端口的物理磁盘可能有不同的路径?

为什么同一个笔记本在两个不同的环境中分配大量不同的 vram?

DLL加载在同一个地址,为什么要这样设计?