[英]Pointer to pointer as a function parameter
我有以下代码:
#include <stdio.h>
#include <stdlib.h>
int f(int x, int *py, int **ppz) {
int y, z;
**ppz += 1;
z = **ppz;
*py += 2;
y = *py;
x += 3;
return x + y + z;
}
int main(void) {
int c = 4;
printf("f(): %d\n", f(c, &c, &&c));
printf("c: %d\n", c);
return EXIT_SUCCESS;
}
我如何才能正确访问**ppz
,因为我收到一条错误消息:“使用了标签 'c',但未定义”。
int**
是指向int*
的指针。 您需要创建一个int*
类型的变量才能在某处传递指向它的指针。 这是你应该做的:
int main(void) {
int c = 4;
int* pc = &c;
printf("f(): %d\n", f(c, pc, &pc));
printf("c: %d\n", c);
return EXIT_SUCCESS;
}
请参阅@ikegami 的回答以了解正确使用指向指针的指针的说明。
你想修改一个int
类型的变量,所以参数应该是int *
,而不是int **
。
如果您想修改int *
variable 类型的变量,您将使用int **
。 这不是这里的情况。
例如,
void f(int **pp) {
*pp = malloc(10);
}
int main(void) {
int *p;
f(&p);
// ...
free(p);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.