簡體   English   中英

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

[英]ANSI C - what does struct **variable mean?

在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;
}

編譯代碼時出錯。

ptrTyPersona* functionFive(ptrTyPersona *ptrPtrTyPersona){

代替

ptrTyPersona functionFive(ptrTyPersona *ptrPtrTyPersona){

這個功能

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 *類型的ptrTyPersona *

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM