scanf ("%s%s",a,b);为什么不需要取地址符
时间: 2023-08-01 15:15:38 浏览: 181
scanf/printf中%的使用方法
在调用 `scanf` 函数时,如果传入的参数是字符数组名,实际上会将该数组名自动转换为指向该数组首元素的指针,因此不需要再取地址符。这是因为数组名在 C 语言中即可以表示一个数组,也可以表示一个指针,这种特性被称为“数组名退化为指针”。
因此,`scanf` 函数的第一个参数 `%s` 接收的是一个指向字符数组的指针,而不是字符数组本身。因此,只需要将字符数组名作为参数传入 `scanf` 函数即可,不需要再取地址符。
需要注意的是,在使用 `scanf` 函数读取字符串时,应该避免输入字符串的长度超过目标数组的长度,否则会发生缓冲区溢出的问题,导致程序崩溃或数据出现异常。可以使用 `%ns` 格式控制符来限制输入字符串的长度,其中 `n` 表示最大允许输入的字符数,例如 `%10s` 表示最多只能输入 10 个字符。
阅读全文