这可能是一个非常基础的问题,但我无法在任何地方找到答案,在几周的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
的内存地址(address),而不是size
中存储的值。你需要做的事情:
printf("size is %d", size);
使用print()
函数。这将打印int
对象size
的值。
但是
printf("size is %d", &size);
是未定义行为。
d
转换说明符需要一个 int
参数,传递指向 int
类型的指针参数会引发未定义行为。 - ouah在printf
语句中删除&
,将&size
改为size
--> 这样会打印出变量的值而非地址。
printf("size is %d", size);
size
的地址,即&size
。size
即可。在printf和scanf中,调用约定是不同的。
Printf的参数通常是按值传递(没有&),但scanf必须使用指针。(&)
(您无法将新值放入例如1.0,但可以打印它...)
&
运算符首先是用来做什么的吗? - qrdl