3

这可能是一个非常基本的问题,但我在任何地方都找不到答案,这是我在用 C 语言编程几周后第一次遇到这个问题。本质上,如果我编写一些看起来像这样的代码:

int size;
scanf("%d", &size);
printf("size is %d", &size);

例如,如果我输入 size = 2,程序将打印出 133692 或类似数字的内容。为什么是这样?我在这里做错了什么?

4

5 回答 5

3

尝试

printf("size is %d", size);

&为您提供变量的内存位置(地址)。

printf("size is %d", &size);

因此,上面将打印 的内存位置(地址)size,而不是存储在 中的值size

于 2012-11-17T16:31:50.510 回答
1

你所要做的:

printf("size is %d", size);

反而。这将打印int对象的值size

 printf("size is %d", &size);

是未定义的行为。

于 2012-11-17T16:27:50.190 回答
0

您正在打印 的地址size,即&size

只是通过一个平原size

于 2012-11-17T16:27:56.173 回答
0

删除语句中的&-- > 打印地址。printf&size

      printf("size is %d", size);
于 2012-11-17T16:28:46.420 回答
0

printf 和 scanf 的调用约定不同。

Printf 的参数通常是按值(没有 &),但 scanf 必须有指针。(&)
(您不能为例如 1.0 设置新值,但可以打印它...)

于 2012-11-17T16:29:00.930 回答