问个c语言的问题,帮忙解答一下

来源:百度知道 编辑:UC知道 时间:2024/05/05 09:54:01
我想看看在程序关闭后,输入这个程序的变量会不会被内存释放掉:现在一个程序里输出指向这个变量的指针的值,再从另一个程序里将这个值赋给指针,输出内存上的值
代码如下
第一个程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
int *p=&a;
scanf("%d",&a);
printf("\n%d\n%d\n%d\n",a,*p,p);
system("PAUSE");
return 0;
}
第二个程序:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int *p;
p=37814108;
printf("%d",*p);
system("PAUSE");
return 0;
}
但第二个无法通过编译:
assignment to `int *' from `int' lacks a cast

为什么啊?
谢了

这是你编的吧!有想法。我是说真的。

p=37814108;改为p=(int*)37814108;

不过这样也不会成功,程序结束后,所占用的内存就被释放了

问题出在
p=37814108;
这一行。
p定义是一个指针,而37814108是一个常量。性质差太远了,这下连C语言这种支持不匹配类型运算的都罢工了。
指针里存的是内存的地址,虽然本质也是数据,但还是有它特殊性的。

举个例子:
定义int*p
p=&a(输入不写了)
你可以通过P输出得到一个值XXXXX
但是你并不能把这个之付给其他指针变量。
让其输出指向XXXXX地址的值。