c++ - C 语言指针的运算问题
巴扎黑
巴扎黑 2017-04-17 14:49:32
0
2
489

代码的目的是让结构体里面的 List 指针指向申请的一维数组;curNumber表示目前数组里的元素个数;代码编译通过了,但是不能运行出来;求详解!

#include #include 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)); }
巴扎黑
巴扎黑

reply all (2)
Ty80
link *A; int k = 8; initst(&A); ... void initst(link **A){ *A = (link)malloc(sizeof(Stack)); (*A) -> List = (int *)malloc(4 * sizeof(int)); }

想要在函数里面改变一级指针参数的指向,要使用二级指针

    大家讲道理

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

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!