scanf(“%s%s”,a,b );中不用&a,&b也可以吗?

[复制链接]
查看11 | 回复5 | 2016-12-6 16:17:54 | 显示全部楼层 |阅读模式
scanf(“%s%s”,a,b );中不用&a,&b也是可以的。因为定义的字符数组名a,b本身就代表数组a和b的首地址,所以,使用scanf(“%s%s”,a,b );和scanf(“%s%s”,&a,&b );是等价的。
回复

使用道具 举报

千问 | 2016-12-6 16:17:54 | 显示全部楼层
首先说明 %s格式符 表示用来输入出一个字符串 而字符串是以数组的形式的存储的 c语言中数组名代表该数组的起始地址 此处,a,b均为数组名 代表的是首地址 再用取地址符号 就重复了 请注意与%c的区别 理解就好啦
回复

使用道具 举报

千问 | 2016-12-6 16:17:54 | 显示全部楼层
字符串在内存中连续存放的,以'\0'作为结束,只要得到首地址,就可以整个的读取;字符数组a[],数组名a 本身就指向首地址,即数组存放的字符串的首地址,因此不加&;字符指针 *a 也是指向字符串的首地址,因此不加&
回复

使用道具 举报

千问 | 2016-12-6 16:17:54 | 显示全部楼层
嗯可以的因为字符串的名称也可看成一个地址,所以有时不加地址符也是正确的!
回复

使用道具 举报

千问 | 2016-12-6 16:17:54 | 显示全部楼层
如果是字符串可以不用,%s就是表示字符串
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行