下面例题:
#include<stdio.h>
int *p;
void s()
{
int n=25;
p=&n;
}
void main()
{
s();
printf("*p=%d:",*p);
}
按理说,应该会有错误才对,因为p指向的是n,而n在函数s()中,程序先调用s(),并创建n,并将p指向它,但是,当函数退出后,n就应该被删除了,所以p指向的地址已经不再存在了~~可是我用tc和vc++没有出错信息阿?!
但是如果在c++中
在s()函数最后加入打印出*P的话,那主函数打印出的*P就有问题了!!
可是在tc中作如此修改也没有问题阿!
这是怎么回事?
应该在局部变量被删除的时候p指向的地址就没了才对啊!
assiss兄弟,来吧!~
我一边看书,一边等你回答!所以你就不要叫我看书了,呵呵~~
#include<stdio.h>
int *p;
void s()
{
int n=25;
p=&n;
}
void main()
{
s();
printf("*p=%d:",*p);
}
按理说,应该会有错误才对,因为p指向的是n,而n在函数s()中,程序先调用s(),并创建n,并将p指向它,但是,当函数退出后,n就应该被删除了,所以p指向的地址已经不再存在了~~可是我用tc和vc++没有出错信息阿?!
但是如果在c++中
在s()函数最后加入打印出*P的话,那主函数打印出的*P就有问题了!!
可是在tc中作如此修改也没有问题阿!
这是怎么回事?
应该在局部变量被删除的时候p指向的地址就没了才对啊!
assiss兄弟,来吧!~
我一边看书,一边等你回答!所以你就不要叫我看书了,呵呵~~