通过指针访问在内部作用域中声明的变量是否安全?
Is it safe to access a variable declared in an inner scope by pointer?
下面的程序打印
root 3
next 11
但是,我不确定程序是否保持root.next直到程序结束。
#include<stdio.h>
typedef struct sequence
{
int x;
sequence* next;
}sequence;
int main()
{
sequence root;
root.x = 3;
{
sequence p;
p.x = 11;
root.next = &p;
}
printf("root %d\n",root.x);
printf("next %d\n",root.next->x);
return 0;
}
p
的范围以右括号结束。
{
sequence p;
p.x = 11;
root.next = &p;
} <---- here
当您调用 printf("next %d\n",root.next->x);
时,您用 root.next
指向的变量 p
不再存在。因此它不是 "safe",因为它会导致未定义的行为。
下面的程序打印
root 3
next 11
但是,我不确定程序是否保持root.next直到程序结束。
#include<stdio.h>
typedef struct sequence
{
int x;
sequence* next;
}sequence;
int main()
{
sequence root;
root.x = 3;
{
sequence p;
p.x = 11;
root.next = &p;
}
printf("root %d\n",root.x);
printf("next %d\n",root.next->x);
return 0;
}
p
的范围以右括号结束。
{
sequence p;
p.x = 11;
root.next = &p;
} <---- here
当您调用 printf("next %d\n",root.next->x);
时,您用 root.next
指向的变量 p
不再存在。因此它不是 "safe",因为它会导致未定义的行为。