ANSI C - struct **变量是什么意思?

时间:2015-02-26 20:16:21

标签: c gcc

在ANSI C中,struct **variable是什么意思?例如:

typedef struct estructuraPersona{
  char nombre[30];
  char apellido[30];
} tyPersona;

typedef tyPersona *ptrTyPersona;

ptrTyPersona functionFive(ptrTyPersona *ptrPtrTyPersona) {
  ptrTyPersona *pptP= (ptrTyPersona *)malloc(sizeof(tyPersona));
  if (*pptP == NULL) {
    printf("Error al crear nuevo nodo!");
    return NULL;
  }
  return pptP;
}

编译代码时出错。

2 个答案:

答案 0 :(得分:0)

待办事项

ptrTyPersona* functionFive(ptrTyPersona *ptrPtrTyPersona){

而不是

ptrTyPersona functionFive(ptrTyPersona *ptrPtrTyPersona){

答案 1 :(得分:0)

此功能

ptrTyPersona functionFive(ptrTyPersona *ptrPtrTyPersona){
  ptrTyPersona *pptP= (ptrTyPersona *)malloc(sizeof(tyPersona));
  if(*pptP == NULL){
    printf("Error al crear nuevo nodo!");
    return NULL;
  }
  return pptP;
}

没有意义,因为没有使用参数ptrPtrTyPersona

我可以怀疑该功能应该执行以下操作

ptrTyPersona functionFive(ptrTyPersona *ptrPtrTyPersona){
  *ptrPtrTyPersona = ( ptrTyPersona )malloc(sizeof(tyPersona));

  if(*ptrPtrTyPersona == NULL){
    printf("Error al crear nuevo nodo!");
  }

  return *ptrPtrTyPersona;
}

对于原始函数,函数返回类型为ptrTyPersona,但函数返回pptP类型的指针ptrTyPersona *

在本声明中

  ptrTyPersona *pptP= (ptrTyPersona *)malloc(sizeof(tyPersona));

有分配结构tyPersona所以你应该使用类型为ptrTyPersona的指针来引用已分配的内存但你使用类型为ptrTyPersona *的指针