1

我知道数组衰减为指针。结果,因为它的行为类似于指针,所以它本质上可以传递给带有需要内存地址的参数的函数,而无需使用与号。例如:

char name[10];
scanf("%s", name);

是正确的。

但是,假设我只想填写'name'数组的第一个元素,为什么不能写成

scanf("%c", name[0]);

但必须在'name [0]'前面加上&符号?这是否意味着单个数组元素不会衰减为指针并且不保存它们的单个内存地址,而不是它们的整个数组对应物?

4

2 回答 2

1
于 2016-06-23T08:17:30.910 回答
1

问题是它char name[10]可以表现为char* name哪个可以,scanf哪个期望第二个参数是指针(内存中的地址)。但是当你写的时候你name[0]得到的是值而不是指针。

例如 ifname"Hello world"then name[0] == 'H'。但scanf想要一个指针。所以为了得到name[0]你需要写的地址scanf("%c", &name[0])

于 2016-06-23T08:22:42.253 回答