搜尋

首頁  >  問答  >  主體

c++ - C 语言指针的问题

结构体的指针运算,编译可以通过,但是运行时出现错误,不知道为什么,求详解!

#include<stdio.h>
#include<stdlib.h>

typedef struct Stack{
  int * List;
  int curNumber;
}Stack, *link;

int main(){
  void initst(link *A);
  void pus(link *A,int k);
  
  link *A;
  int k = 8;
  initst(A);
  pus(A, k);
  return 0;
}

void initst(link *A){
  *A = (link#)malloc(sizeof(Stack));
  (*A) -> List = (int *)malloc(4 * sizeof(int));
}
void pus(link *A,int k){
  *((*A)-> List) = k;
  printf("%d \n",*((*A) -> List));  
}
迷茫迷茫2773 天前309

全部回覆(2)我來回復

  • 高洛峰

    高洛峰2017-04-17 14:51:36

    看不懂你的push想幹嘛。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:51:36

    你的A是個二級指針吧。其實是Stack **A對吧。
    你在initst對*A進行修改,可是你沒有初始化A啊,A指向的是隨機位址。
    型別這麼定義比較好
    …… }Stack, *PStack;
    ……
    PStack pA; // 注意 pA 也是指標啊!
    PStack *ppA = &pA;
    initst(ppA);
    你這個邏輯呼叫initst後會修改pA儲存的位址啊。

    回覆
    0
  • 取消回覆