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

浏览:31日期:2023-04-10

问题描述

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

#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)); }

问题解答

回答1:

看不懂你的push想干嘛。

回答2:

你的A是个二级指针吧。其实是Stack **A对吧。你在initst对*A进行修改,可是你没有初始化A啊,A指向的是随机地址。类型这么定义比较好…… }Stack, *PStack;…… PStack pA; // 注意 pA 也是一个指针啊! PStack *ppA = &pA; initst(ppA);你这个逻辑调用initst后会修改pA存储的地址啊。

相关文章: