美文网首页C
在子函数中改变指针的值

在子函数中改变指针的值

作者: SnC_ | 来源:发表于2019-06-12 17:22 被阅读0次

    先看一段代码

    typedef struct LinkNode{
        int data;
        struct LinkNode *next;
    }Node;
    
    void test(Node* a){
        Node *b = (Node*)malloc(sizeof(Node));
        b->data = 2;
        a = b;
    }
    
    int main(){
        Node *a = (Node*)malloc(sizeof(Node));
        a->data = 1;
        test(a);
        printf("%d",a->data); // Output : 1
        return 0;
    }
    

    为何在子函数中修改指针的指向不成功呢?

    因为,指针作为形式参数传给子函数,传递的是指针本身的值。
    子函数会在栈中新开辟空间来保存该值。修改该值,并不会影响主函数中的实参。

    如何在子函数中修改指针的值?
    1. 使用指针的指针
      若将指针a的指针作为子函数参数,则在子函数中是可以通过引用关系找到指针a的位置,并对其进行修改的。
    2. 子函数return局部变量
      用return来传递函数中修改后的结果,是一种比较朴素的做法。

    相关文章

      网友评论

        本文标题:在子函数中改变指针的值

        本文链接:https://www.haomeiwen.com/subject/yftrfctx.html