我有以下代码:
#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',但未定义”。
答案 0 :(得分:2)
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的答案,以正确使用指向指针的指针。
答案 1 :(得分:1)
您要修改类型为dotnet watch run
的变量,因此参数应为int
,而不是int *
。
如果要修改int **
类型的变量,请使用int **
。这里不是这种情况。
例如,
int *