c语言中 如scanf("%d",&a)为什么要加& 而printf(“%d",a+b)里却没有这个& %f %d之类的是怎么回事

作者&投稿:官之 (若有异议请与网页底部的电邮联系)
scanf("%d%d",&a,&b)与scanf("%d,%d",&a,&b)的区别!!~

1、scanf("%d%d",&a,&b)输入的两个数据用空格,TAB或者回车区分开。
2、scanf("%d,%d",&a,&b) 输入的两个数据用逗号区分开。
3、scanf函数功能是从外设读取数据并赋值给变量,%d代表接收一个整形数,&a代表变量a的内存地址,也就是说把读取的第一个整形数赋值给变量a。
4、scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意。

扩展资料:使用scanf函数常见的问题
1、在高版本的 Visual Studio 编译器中,scanf 被认为是不安全的,被弃用,应当使用scanf_s代替 scanf。
2、对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。
3、 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。
4、 scanf函数中没有类似printf的精度控制。
如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。
5、scanf中要求给出变量地址,如给出变量名则会出错
如 scanf("%d",a);是非法的,应改为scanf("%d",&a);才是合法的。
6、 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。
C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
7、 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
参考资料:百度百科-scanf

二者的区别是一个是取变量的值,一个是取地址。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++中引用的声明方法:类型标识符 &引用名=目标变量名,&在此不是求地址运算,而是起标识作用。
资料来源:百度百科:&

这个符号"&",是取地址运算符,由于scanf是输入函数,所以在输入时,一定要告诉计算机这个东西往哪存储,所以就要把程序员想存储的地址先取出来,然后在往这个地址里输入内容。而printf是标准输出函数,就是在显示器上把要显示的东西给显示出来,所以都是在显示器上显示,不用什么取地址符号。%f表示浮点型,%d表示整型。

c语言中的函数的参数传递都是值传递,形参的改变并不能改变实参的值。
若想改变 实参的值,可以采用地址传递。

scanf函数将用户的输入的数值存储到实参a中,所以需要传递a的地址。
printf函数是将a+b输出到屏幕上,并不需要改变a+b的值,所以无需传递地址。

“scanf("%d",&a);”是输入语句,也就是从终端键盘输入数值给变量a,scanf中用到是地址,&a表示的就是变量a的地址,printf中只要指明变量名就行了,所以printf的变量名前不用加&符号,scanf与printf中的%d,%f表示的是操作的变量是整型的和浮点型的,还有%c,%s分别表示操作的变量是字符型和字符串类型

建议你多了解c语言的输入输出格式,看了你就什么都知道了


新抚区18446017985: C语言中~scanf表示什么 -
司震亮邦: C语言中scanf是标准库函数,主要用来接收用户输入的数据. 函数格式:int scanf(char *format, args, ...); 功 能:从标准输入设备按format指定格式输入数据给args所指向的内存单元返 回 值 :读入并赋给args的数据个数.遇文件结束返回EOF,出错返回0 举例如下: int a;scanf("%d", &a); // 按%d的格式(即整型的格式),将用户输入的数据赋值给&a指向的内存单元(即变量a所在的内存单元).// 简单理解就是将用户输入的数转换为int类型并赋值给变量a

新抚区18446017985: C语言中的scanf函数怎么用呀? -
司震亮邦: scanf("字符串,确定输入的类型",变量地址); example: int a; scanf("%d",&a);%d,%f,%lf,%c,%s分别表示int,float,double,char,字符串.根据你输入变量的类型选择.

新抚区18446017985: C语言中scanf函数解释? -
司震亮邦: scanf函数是输入函数……例如:scanf(''%d'',&c),就是这样用的就是从终端输入一个变量例如3,那么c的值就是3,如果是int *p=&c;那么scanf(''%d'',p),就是这样的类型,%d是定义变量C的数据类型!

新抚区18446017985: “scanf”在c语言中什么意思? -
司震亮邦: scanf 是C语言中的输入函数,被定义在头文件stdio.h里: 函数原型: int scanf(const char *format,...);函数 scanf() 是从标准输入流stdio (标准输入设备,一般是键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中.其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致.

新抚区18446017985: C语言scanf用法 -
司震亮邦: scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include .(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include .)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中.scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF.

新抚区18446017985: c语言中的scanf语句应用 -
司震亮邦: scanf全部改成: scanf("%d",&n);自己去网上好好看看scanf的函数说明.

新抚区18446017985: C语言中的scanf是什么意思 -
司震亮邦: scanf表示从键盘输入指定格式的数据.如:scanf("%d",x);指从键盘给x输入一个int型(整型)数据;scanf("%f",x);指从键盘给x输入一个float型(实型)数据; 对应的输出为:printf 按照指定的格式输出数据;如printf("%d",x); 指按整型数据输出X中的值. 举例说明如下:scanf("%d%d", &a, &b); // 接收用户从键盘输入的2个整数,分别赋值给变量a,b

新抚区18446017985: c语言中scanf括号里&什么意思 -
司震亮邦: 代表取地址的意思,如scanf(“%d”,&a),则代表输入的数据将被填充到地址为&a的内存空间上,而&a的地址就是存储a的,所以输入的数据就存储到变量a中.

新抚区18446017985: c语言中的scanf 函数的用法 -
司震亮邦: 输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&.scanf("%s",s);改为scanf("%s",&s); scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);格式控制字符串包含:格式控...

新抚区18446017985: c语言中scanf函数的用法 -
司震亮邦: 比如int i; scanf("%d",&i);//&是取地址运算符,取i的地址 又如int a[10]; scanf("%d",a);//数组名本身就是一个数组的首地址 总结就是scanf(" 格式控制", 地址);

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网