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

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分配的空间。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值