假设我在function1
内有一个指针,我需要将其传递给function2
,而function2
需要将其传递给function3
,function3
需要更新该指针。你怎么做到这一点?
function2
内传递指针的正确方法是什么?
function1(void){
char *pointer;
function2(&pointer)
}
function2(char **pointer){
function3(&(*pointer));
}
function3(char ***pointer)}
/*update pointer*/
}
我的问题仅针对此情况(3个函数),我不想删除function2
,即使它什么都不做。
答案 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*/
}