Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1089911
  • 博文数量: 169
  • 博客积分: 12306
  • 博客等级: 上将
  • 技术积分: 1299
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-29 14:55
文章分类

全部博文(169)

文章存档

2012年(18)

2011年(78)

2010年(15)

2009年(1)

2008年(11)

2007年(39)

2006年(7)

我的朋友

分类: C/C++

2008-07-01 14:17:03

一、

指针的指针内存分配理解起来很容易的

例如 PtrType **p ;

1,首先要记住p是个指针,所以要给p一片空间 p = (PtrType **)malloc(num * sizeof(PtrType *)) ;

2,然后,还要切忌*P仍然是指针,所以   *(p+i) = (PtrType *)malloc(num_i * sizeof(PtrType)) ;

为了便于推广,不妨把一个*看成一代孩子吧。有多少代人就得分配多少代房子哦,要不没地方住,就是野孩子啦。

if (PtrType == char)

      记得赋值的时候(*(p+i))[最大标号] = '\0'啊

 

二、

#include

int main()
{
int blockNumber = 0, blockSize = 0, i;
int **pMems = NULL;

printf("输入要分配的内存块数 : ");
scanf("%d", &blockNumber);
printf("输入分配的内存块大小 : ");
scanf("%d", &blockSize);

if(blockNumber < 1 || blockSize < 1)
{
printf("无效的输入。\n");
getchar();
return 1;
}

printf("\n正在申请动态内存指针内存块...\n");
pMems = (int**)calloc(blockNumber, sizeof(int));
if(pMems == NULL)
{
printf("申请动态内存指针内存块失败。\n");
getchar();
return 2;
}

printf("\n正在申请 %d 块内存,...\n", blockNumber);
for(i=0; i< blockNumber; i++)
{
*pMems = (int*)malloc(blockSize);
if(*pMems == NULL)
{
printf("申请第 %d 块内存失败。\n", i + 1);
getchar();
return 3;
}
pMems++;
}
pMems -= blockNumber;

printf("成功!\n");
printf("Power by Zealic");
getchar();
return 0;
}

阅读(4531) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~