我正在向C类进行介绍,我想知道:为什么在C中将字符串分配给字符数组时不需要“与”号(&)?
例如,我了解到char name[10]; scanf("%s", name);
将字符串分配给字符数组。但是,我们了解到,scanf("%d", &intVariable);
例如,将输入分配给变量。
为什么不是这样的scanf
说法scanf("%s", &name);
?
中的转换规范要求%s
使用scanf
类型为的参数char *
。变量name
的类型char []
(的数组char
)。
在C语言中,数组名称作为参数传递给函数时,将转换为指向其第一个元素的指针。因此name
,char *
在传递给时已经将其转换为类型scanf
,您无需放在&
前面。配售&
之前name
会给阵列本身的地址,即其类型将是指针的阵列char
(char (*)[]
)。指向char
和指向char
两者的数组的指针是不同的类型,因此是不兼容的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句