#include
#include //分配内存时用到的头文件
void main()
{
int a=20,*p; //这里定义了一个整型指针,但没赋初值,这时我们叫这个指针为野指针
printf("%d->%p\n", a, p); //观察%p是输出一个地址数据
p=NULL;
printf("%d->%p\n", a, p);
p=&a;
printf("%d->%p:%d\n", a, p, *p);
p=(int *)malloc(sizeof(int));
printf("%d->%p:%d\n", a, p, *p);
*p=30;
printf("%d->%p:%d\n", a, p, *p);
}
认真观察这个程序及输出结果
如果只定义指针,没有初始化系统是不会给它分配内存的,初始化后,只是指向某个内存而已,没有初始化的指针是指向一个未知的内存地址,这样的指针是很危险的。一般我们定义一个指针变量就会给它初始化为空,以免造成的危险无法补救。
第11行就是给指针P分配内存了,这是C语言中的规定,没有为什么的。
分配内存之后它再也不指向a变量的内存地址,而是指向一个新的内存地址。
指针定义不分配内存
最新推荐文章于 2023-04-09 15:21:13 发布

3192

被折叠的 条评论
为什么被折叠?



