C语言里,scanf的&的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言里,scanf的&的使用相关的知识,希望对你有一定的参考价值。
参考技术A 字符串数组,数组它本身有个地址,如int
a[10]
char
str[11];其中a
str都是地址。为这个字符串数组,或数组的起始地址,而但对相对元互素操作可能用
起始地址相加得到,也可用取地址(&)得到,如a[5]的地址可表示为a+5,也可表示为&a[5] 参考技术B 呵呵,其实你只要注意下scanf函数的用法就行了:
scanf常用法:
scanf(格式控制,地址表列),其中,地址表列”是由若干个地址组成的表列,可以是变量的地址,也可以使
字符串首地址。(呵呵,这就是问题所在)
sacnf()中的变量必须使用地址,格式控制串可以使用其它非空白字符,但在输入时必须输入这些字符,另外在用"%c"输入时,空格和“转义字符”均作为有效字符,也就是说均被读入程序中,在输入时候要特别注意。 参考技术C 只要你记住,&就是代表一个地址,scanf(格式控制,地址表列),如果你要输入一个字符串的话,char
a[10];scanf("%s",a);a就是代表数组a【10】的头地址。如果你要输入一个数字。int
a;scanf("%d",&a);
&a就是代表a的地址。然后用scanf向里面写东西。慢慢的学,别急,你以后会慢慢弄清楚的。祝你成功!~ 参考技术D 因为,字串符数组的数组名就是字串符的首地址,把字串符输给字串符数组的首地址,就会自动分配内存了 第5个回答 2020-10-05
scanf 函数最主要的用法是:
scanf("输入控制符", 输入参数);
函数原型:int scanf(const char * restrict format,...);
函数 scanf() 是从标准输入流stdin (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
扩展资料:
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。
发展:
使用scanf函数进行输入,必须指定输入的数据的类型和格式,不仅繁琐复杂,而且很容易出错。C++保留scanf只是为了和C兼容。
以便过去用C语言写的程序可以在C++的环境下运行。C++的编程人员都愿意使用cin进行输入,很少使用scanf。
但是scanf有一个明显的优点,速度比cin函数快。
参考资料:
百度百科-scanf (计算机语言函数)
C语言中while语句里使用scanf的技巧
今天友人和我讨论了一段代码,是HDU的OJ上一道题目的解,代码如下
#include<stdio.h> { int a,b; while(~scanf("%d%d",&a,&b)) { printf("%d\n",a+b); } return 0; }
起初,我以为代码中while语句里的按位取反运算符写错了,应该是逻辑非运算符。
这时我在Quora上找到了类似的问题,我对其中一篇答案做了修改和翻译:
查阅scanf函数的man手册,关于返回值的说明如下
函数返回按照格式成功匹配并读入的输入项数量,并且可能会返回一个小于输入项总数的数字,而在匹配失败的情况下,甚至可能返回0。
如果在第一次成功读入或者发生匹配错误之前收到输入结束信号,将会返回EOF。在遇到读入错误的时候,也会返回EOF。
在上面的代码里,scanf的返回值可能是0,1,2或者EOF。
对0,1,2进行按位取反得到的都是非零值,此时while循环会继续执行。
在大多数环境里,EOF被定义为值为-1的常量,进行按位取反后得到的值为0.此时while循环将会结束。
综上所述,这个while语句可以不断从输入流读入数据,直到输入流结束,循环也就结束。
值得一提的是,这种用法仅仅在EOF被定义为-1的环境下有效,而且可读性很差。所以应该尽量避免使用它。
在Linux和OS X里,你可以通过Ctrl+D来发送一个输入结束信号,在Windows里你需要使用Ctrl+Z。
参考资料:
以上是关于C语言里,scanf的&的使用的主要内容,如果未能解决你的问题,请参考以下文章