c语言中scanf("%d",a)和scanf(%d",&a)在printf("%d",a)中到底有什么区别

我已经知道了 谢谢

二者的区别是一个是取变量的值,一个是取地址。scanf(%d",&a) 是读取整型变量a在内存中的地址,而scanf("%d",a)是读取整型变量a的值。

&是取地址的意思,&a是取出变量a的地址scanf(%d",&a) 就是读取1个数字,写入a的地址,scanf("%d",a),是读取1个数字,写入地址a,这个a如果是100,就写到地址100。如果是200,就写到地址200,显然,这很危险,万一a的存储的值刚刚好是一些指令的地址什么的,会写到这个地址修改指令,就运行不下去了,出大错。printf("%d",a) 就没什么了 把变量a的存储的值输出然后&是取地址。

拓展资料

1、在HTML或SGML文档中,用于指明有字符存在(特殊字符)的默认符号。

2、在电子制表程序中,用于在描述单元格相互关系的公式中插入文本的操作符。

3、英文中代表and,也可读and。

4、该字符读音“z'da”。

5、&还有“联合”的意思。比如“A&B”公司,就是“A”和“B”两间公司合并起来的。

6、在某些电脑语言,如java中,表示按位进行“与”运算。

7、英文拼写:ampersand。

8、高级语言中的取地址符,如:“int a=0;int *p;p=&a;”,意为取变量a的地址给指针p。

9、C语言中两个&&表示“与”运算。如:while(a==9&&b==5) 表示当a等于9且b等于5时,条件成立。

10、Matlab中,&表示“与”运算(对应地,|表示“或”运算),但Matlab较高版本(如:Matlab R2008b)中,也承认&&的写法。在以上的意义中,以第3和第5项的用法最为普遍。

11、在vfp 数据库中,&是一个宏代换函数,用内在变量的值来代替&及变量名。

12、在Pascal中,&是八进制整型常量的前缀,如&7表示7 , &17表示15 , &177表示127 。

13、&还被大量引入到艺术创作与设计中。

14、bat中的命令,&之后顺序执行多条命令,不管命令是否成功。

15、在Visual Basic中使用命令按钮时,(&字母)代表将该字母设为快捷键。如在命令按钮的Caption属性中输入“确定(&K)”则表示K为“确定”事件的快捷键。

16、起标识作用。C++中引用的声明方法:类型标识符 &引用名=目标变量名,&在此不是求地址运算,而是起标识作用。

资料来源:百度百科:&

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-26

scanf(%d",&a) 就是读取整型变量a在内存中的地址 。

scanf("%d",a)就是读取整型变量a的值。

printf("%d",a) 就是输出整型a的值。

在C语言中,&是取地址运算符,&a表示获取a在内存中的地址。%d 格式化输出整数。scanf() 函数用于从标准输入(键盘)读取并格式化, printf() 函数发送格式化输出到标准输出(屏幕)。

在C语言中,%f表示 格式化输出浮点型数据。

例如:

#include <stdio.h>

int main(){
   

float f;    

printf("Enter a number: ");    // %f 匹配浮点型数据
   scanf("%f",&f);    printf("Value = %f", f);

return 0;

}

本回答被网友采纳
第2个回答  2012-03-29
&是取地址的意思 &a 是取出变量a的地址
scanf(%d",&a) 就是读取1个数字 写入a的地址

scanf("%d",a) 是读取1个数字 写入地址a 这个a如果是100 就写到地址100 如果是200 就写到地址200 显然 这很危险 万一a的存储的值刚刚好是一些指令的地址什么的 会写到这个地址修改指令 就运行不下去了 出大错

printf("%d",a) 就没什么了 把变量a的存储的值输出
然后 &是取地址 所以你可以
printf("%d",&a) 这样是输出a的地址本回答被提问者和网友采纳
第3个回答  2012-03-29
scanf是输入,要在变量前加上&。printf是输出,不用加&
第4个回答  2020-01-13
那两个回答对scanf的解说也太迷了,scanf后半部分写的应该是一个指针(地址)
如果a是一个int变量,a = 1,存储在内存的1234 5678H处,scanf(%d",&a)是正确写法,表示将输入读到变量a所在的地址处,即内存的1234 5678H处
而在执行时scanf("%d",a)会发生错误,因为将输入读到了内存的0000 0001H处