指针非常简单的问题
请问这两种写法有什么区别吗 前者null表示这个指针谁也不指向,于是这个地址值为0(null宏定义就是0)
后者分配了内存,这个指针就有了地址值
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p = NULL;
int *l=(int*)malloc(sizeof(int));
printf("p:%x\n",p);
printf("l:%x",l);
return 0;
}
p:0
l:9f13e0 第一种方法中只是定义了一个指针变量,该指针并没有指向一段存储空间,如果要使用还需要进行赋值的
第二种方法中malloc函数则是向计算机申请了一个整型数据的内存空间,它会返回一个指向该段内存空间的指针,然后将该地址赋值给了p,也就是完成了对指针p的赋值工作,我们就可以通过操作p操作这段内存空间了 int *p只定义了一个指向整型数据单元的指针;
p = (int*)malloc(sizeof(int))定义的指针同时分配了计算机一个整型单元大小的空间,由p指向。 第一个是单纯定义空指针,第二个是在堆上申请一块内存空间,然后用指针指向它 {:7_133:} {:5_103:} {:9_226:}
页:
[1]