例如,struct T *ptr;是指向一個結構體的指針,也可以當做一個結構體陣列來用。 可以把結構體當做 int 來看,int* 型別即可以指向一個整數,也可以指向陣列。
struct T ** ptr, 說白了 就是一個結構體指針的陣列,陣列內都是指針,還要分配記憶體。
1,結構體指針用法一:
struSysInfo *SysInfo;
SysInfo = (struSysInfo*)malloc(sizeof(struSysInfo));
SysInfo->VERSION = (char *)malloc(sizeof(char)*10);//VERSION 是結構體中的一個char指針
2,結構體指針用法二:
struParamModel *pParamModel;
ParaModelNum = 20;
pParamModel = (struParamModel*)malloc(sizeof(struParamModel)*ParaModelNum);
for(i = 0;i < ParaModelNum;i++)
pParamModel[i].VERSION = (char *)malloc(sizeof(char)*10);//VERSION 是結構體中的一個char指針
3,指向結構體指針的指針用法一:
BlockCfg **pBlockCfg;
wBlockNum = 100;
devp->pBlockCfg = (BlockCfg**)malloc(sizeof(BlockCfg*)*wBlockNum);
for(b = 0;b < wBlockNum ; b++)
{
devp->pBlockCfg[b] = (BlockCfg*)malloc(sizeof(BlockCfg));
memset(devp->pBlockCfg[j]->BlockType, '\0', 32);//BlockType是結構體中的一個佔32位元組空間的char型陣列
}
4,指向結構體指針的指針用法二:
FrozenTpyes **pFrozeTypes;//一維對應di2pos,二維對應di0pos
wDI2Max = 20;
devp->pFrozeTypes = (FrozenTpyes**)malloc(sizeof(FrozenTpyes*)*wDI2Max);
for(a = 0;a < wDI2Max;a++)
{
wFrozeTimes[a] = a+10;
devp->pFrozeTypes[a] = (FrozenTpyes*)malloc(sizeof(FrozenTpyes)*wFrozeTimes[a]);
for(b = 0; b < wFrozeTimes[a];b++)//次數
{
memset(devp->pFrozeTypes[a][b].chFrozTime,0,12);//chFrozTime爲結構體中佔12位元組空間的char型陣列
}
}