天天看点

指向结构体的指针和指向结构体指针的指针

例如,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型数组

   }

}

继续阅读