首页 > 解决方案 > 当我将下一张卡片分配给它时,为什么指针最后没有在主函数中改变?

问题描述

void insertEndC(card* last, int val) {
    card* newCard;
    newCard = (card*)malloc(sizeof(card));
    newCard->val = val;
    if (last != NULL) {
        last->nextCard = newCard;
        newCard->prevCard = last;
        last = last->nextCard;
    }
    else {
        last = newCard;
        last->prevCard = NULL;
    }   
    last->nextCard = NULL;
}

指针是否仅在此过程的范围内更改?

标签: cpointers

解决方案


“指针是否仅在此过程的范围内更改?”

正确,对指向的地址的任何更新last都不会在insertEndC(). 您需要传入指针的地址才能更改last指向的位置:

void insertEndC(card** last,int val) {

当然,将其余功能代码更改为 de-reference last


推荐阅读