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