[zt] (菜鸟问题)指针为什么要用malloc不明白?

来源:互联网 发布:avalon.js 被抛弃了吗 编辑:程序博客网 时间:2024/05/27 01:06

http://topic.csdn.net/u/20080922/13/60e16c28-d829-41da-9b86-35c90d8d3963.html

 

 

int * p; 
p的确有空间,正如一个整型变量需要占用空间一样,指针变量也要占用空间。 
可关键在于这个空间存放的什么? 
整型变量的空间中存放着一个整数,指针变量的空间中则存放一个地址! 

int a = 10000; 
int * p = &a; 
这样就有为a分配一个空间,里面存放了10000; 
为p分配了一个空间,里面存放了a的地址(e.g 0x013024,呵呵) 
(实际上,地址本身就是用整数表示,你可以printf("%d", (int)p);试一下喽)。 

而malloc是什么意思呢,malloc实在程序动态运行的时候,在堆区heap中获取一块空间。 
原型如下—— 
#define size_t unsigned int 
void * malloc(size_t size); 

你传进去个size,就可以获取size个字节的空间,然后返回一个void *指针,这个指针指向了这块新分配的空间 
(也就是这个指针中的地址值为这块空间的首地址) 

int * p = (int *)malloc(sizeof(int)); 

如上是动态创建一个int变量的程序。 

这样,p中存放了malloc分配的空间的首地址,继而利用这个首地址访问malloc分配的空间。 

原创粉丝点击