在C中将字符串分配给字符数组时,为什么没有'&'?

佩里

我正在向C类进行介绍,我想知道:为什么在C中将字符串分配给字符数组时不需要“与”号(&)?

例如,我了解到char name[10]; scanf("%s", name);将字符串分配给字符数组。但是,我们了解到,scanf("%d", &intVariable);例如,将输入分配给变量

为什么不是这样的scanf说法scanf("%s", &name);

吊床

中的转换规范要求%s使用scanf类型为的参数char *变量name的类型char [](的数组char)。
在C语言中,数组名称作为参数传递给函数时,将转换为指向其第一个元素的指针。因此namechar *在传递给时已经将其转换为类型scanf,您无需放在&前面。配售&之前name会给阵列本身的地址,即其类型将是指针的阵列charchar (*)[])。指向char指向char两者的数组的指针是不同的类型,因此是不兼容的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将串联字符串分配给python中的变量时,为什么这么慢?

在C语言中,为什么在声明字符串后不能将其分配给char数组?

将浮点数分配给字符串引用有效—为什么?

为什么我们不能将字符串值分配给2d char数组?

为什么可以在C中将字符串分配给字符指针,而不能将整数值分配给整数指针

无法在Delphi 10.2中将char数组分配给字符串

在结构中将字符串分配给char *

创建带有日期对象的日期时,为什么会收到“类型为“日期”的参数不能分配给类型为“字符串|数字”的参数”的信息?

C ++将char **分配给字符串数组

将字符串文字分配给非const指针时,为什么我的C编译器没有警告?

如何在没有sprintf或strcpy的情况下将字符串分配给char数组

Angular应用程序:将字符串分配给数字时,没有打字稿错误

为什么在c ++中尝试在Visual Studio中将字符串分配给istringstream对象时出现错误?

将数组字符串分配给某些链接

将字符串分配给动态int数组时的重新分配问题

将字符串分配给char数组

分配给单个对象的字符串数组实例

为什么在将正则表达式字符串分配给变量时出错?

无法将字符串分配给数组

如何在PHP中将数组分配给字符串?

为什么将字符分配给C ++字符串会导致字符串长度为0?

为什么我可以将一个Int分配给一个没有编译器错误的字符串?

当将值分配给结构初始化程序中的字符串数组成员时,为什么会收到“ int-conversion”警告?

C++ 无法将字符数组变量分配给字符串变量

“NUL”字符(“\0”)字节是分隔的还是分配给带有字符串的字符数组?

无法在 python 中将字符串分配给我的数组/列表

在 C 中将字符串分配给 int

为什么在 C++ 中将有符号字符分配给无符号字符时从 256 中减去?

C - 为什么这个字符串没有分配给变量?