【发布时间】:2018-03-28 12:34:16
【问题描述】:
我遇到了一个关于指针的问题,如下所示。我无法理解为什么下面代码的输出是 1000 而不是 10。谁能帮我怎么可能?
#include<stdio.h>
int y;
void main()
{
int x, *px, **ppx;
x = 10;
y = 1000;
px = &x;
ppx = &px;
f3(ppx);
printf("%d", *px);
}
void f3(int **pp)
{
*pp = &y;
}
【问题讨论】:
-
函数将
px的值从&x更改为&y,y的值是1000。 -
这不是有效的 C。任何现代编译器都会遵守缺少的声明。另外
main必须至少是int main(void) -
@Yatendra Dubey 代码编译了吗?
-
当您尝试将
ppx传递给缺少前向声明的f3时,编译器是否不会警告您? -
@VladfromMoscow 是的,代码确实可以编译