结构体的指针运算,编译可以通过,但是运行时出现错误,不知道为什么,求详解!
#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));
}
看不懂你的
push
想幹嘛。你的A是個二級指針吧。其實是Stack **A對吧。
你在initst對*A進行修改,可是你沒有初始化A啊,A指向的是隨機位址。
型別這麼定義比較好
…… }Stack, *PStack;
……
PStack pA; // 注意 pA 也是指標啊!
PStack *ppA = &pA;
initst(ppA);
你這個邏輯呼叫initst後會修改pA儲存的位址啊。