c语言刚学第一天求解答

为什么a前面有个&?它的作用是什么?不加会怎么样?
在什么情况下要使用呢?

img

一.因为scanf作为一个C语言函数,括号里所需要的是一个地址值作实参,即将你输入的值传到该地址即&a(变量a在内存里的地址中)保存,而非把变量a本身的值当作地址;(特殊情况:当a为数组时,单独的所谓的a代表数组a的地址,其内容也是地址,本质还是作为指针将地址来传入,见第四条1点)
二.&是取地址符,作用是将a所在地址求出;
三.不加的话,就相当于把变量a的当前值作为一个地址传入scanf函数,可能访问到不该访问的地方,如系统的指令集等,导致系统出错,进而程序崩溃,虽然有的编译器会报错,但有的不会;
四.要使用&的情况:1.将地址作为指针,传入一个函数当参数;2.运用scanf这种需要地址的函数时;
ps.题主作为初学者,一开始可以不必深究弄懂,等学指针时自然会明白的

这是scanf函数输入整数的参数类型要求,必须是整型的地址。如果不加&,函数会把a当前的垃圾值当作地址,然后程序会崩溃掉,因为这个地址显然是不受控的

表示取地址符,将a的内容传入

建议买本书,或者看看视频系统学习,这样效率更高

scanf()函数后面加的 & 叫做取地址操作符

同时并不是所有的scanf()里面都去要添加 &
只有在scanf接受数组的时候不需要添加取地址操作符 &