#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-01-16 01:06:39 发布