您的位置:首页 > 编程语言 > C语言/C++

C语言小知识点 汇总6 scanf的使用

2016-10-08 09:36 239 查看
C语言小知识点 汇总6

知识点12:

用scanf输入字符串(s%)时为什么不需要&

Int a,b;

scanf("%d,%d",&a,&b);

Sum=a+b;

Printf(“sum is %d\n”,sum);

 

Scanf 函数的作用是输入a和b的值,&a和&中的“&”的含义是“取地址”,此scanf函数的作用是将两个数值分别输入到变量a和b的地址所标志的单元中,也就是输入给变量a和b。

那么在输入字符串时,为什么不需要&呢?

char s[10];

scanf("%s",s);

 

因为在c程序中,可以用两种方法访问字符串:

1、用字符数组存放一个字符串

2、用字符指针指向一个字符串

C中数组名就是数组首地址的意思,所以没必要再用&
取地址了

例:

char s[10];

scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?

求解释

1 s与&s都表示地址,且值相等。

2 s与&s类型不一样,s的类型为char *,&s的类型为char
(*)[10],即指向一行有10个字符的指针。

3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char
*)&s);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scanf的使用