printf() 似乎改变了一个变量

printf() seems to change a variable

本文关键字:一个 变量 改变 printf      更新时间:2023-10-16

我是 cpp 初学者,很难理解为什么在下面的代码中,printf((...函数似乎改变了一些变量。代码或我的编译器安装中是否有问题?

#include <iostream>
#include<stdio.h>
class Node
{
public:
    int val;
    Node * next;
    Node(int v) { // constructor
        val=v;
        next=NULL;
    }
};
class Stack
{
public:
    Node *head;
    Stack(int i) // constructor
    {
        Node n(i);
        head=&n;
    }
};
int main() 
{
    Stack s(1);
    printf("s.head->next: %pn",s.head->next);
    printf("s.head->next: %pn",s.head->next);
}

我得到以下输出:

s.head->next: 00000000
s.head->next: FFFFFFFE

我怎么可能不一样?(使用 std:cout 函数时遇到了类似的问题,但最小的代码会更长(。 感谢您的反馈。

这个:

  Node n(i);

创建一个局部变量,然后存储以下地址:

  head=&n;

并稍后使用该地址。

在那之后,所有的赌注都关闭了,因为你处于不确定的行为领域。