如何更新必须通过3个函数的指针?

时间:2017-06-03 11:00:33

标签: c pointers

假设我在function1内有一个指针,我需要将其传递给function2,而function2需要将其传递给function3function3需要更新该指针。你怎么做到这一点?

你使用三星吗?如果是这样,在function2内传递指针的正确方法是什么?

function1(void){
    char *pointer;
    function2(&pointer)
}

function2(char **pointer){
      function3(&(*pointer));
}

function3(char ***pointer)}
    /*update pointer*/
}

我的问题仅针对此情况(3个函数),我不想删除function2,即使它什么都不做。

2 个答案:

答案 0 :(得分:7)

只需保留两个指针级别。

#include <stdio.h>

static int b = 42;

void foo(int **a) {
    *a = &b;
}

void bar(int **a) {
    foo(a);
    printf("%d\n", **a);
    **a = 21;
}

int main()
{
    int *a = NULL;

    bar(&a);

    printf("%d\n", *a);
}

输出:

42
21

答案 1 :(得分:-1)

**pointer表示指向指针的指针。您可以直接将指针传递给所有三个函数。你很少需要使用类似&#34;指向char指针数组的指针&#34;

function1(void){
    char *pointer = /* init with something to point to */;
    function2(pointer)
}

function2(char *pointer){
      function3(pointer);
}

function3(char *pointer)}
    /*update pointer*/
    pointer = /* Next thing it needs to point to*/
    *pointer = /* Update value that is pointed to*/
}