这可能是一个非常基本的问题,但我在任何地方都找不到答案,这是我在用 C 语言编程几周后第一次遇到这个问题。本质上,如果我编写一些看起来像这样的代码:
int size;
scanf("%d", &size);
printf("size is %d", &size);
例如,如果我输入 size = 2,程序将打印出 133692 或类似数字的内容。为什么是这样?我在这里做错了什么?
尝试
printf("size is %d", size);
&
为您提供变量的内存位置(地址)。
printf("size is %d", &size);
因此,上面将打印 的内存位置(地址)size
,而不是存储在 中的值size
。
你所要做的:
printf("size is %d", size);
反而。这将打印int
对象的值size
。
但
printf("size is %d", &size);
是未定义的行为。
您正在打印 的地址size
,即&size
。
只是通过一个平原size
。
删除语句中的&
-- > 打印地址。printf
&size
printf("size is %d", size);
printf 和 scanf 的调用约定不同。
Printf 的参数通常是按值(没有 &),但 scanf 必须有指针。(&)
(您不能为例如 1.0 设置新值,但可以打印它...)