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

C语言小知识点 汇总6

知识点12

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

Int a,b;

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

Sum=a+b;

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

 

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

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

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值