分类: 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;
}