在下面的代码中:
struct a {
char name[18];
}customer;
scanf("%s",customer.name);
printf("%s",customer.name);
struct a *pt=&customer; `
因为将数组名指向that的第一个元素,所以customer.name
是否指向这个成员的第一个元素?
在一本书中写到 *(customer.name+2)
等同于 customer.name[2]
和 pt->name[ 2]
。但我无法理解这些注释,也无法理解为什么 scanf()
函数中的 customer.name
是地址而 printf()
函数中不是地址?
最佳答案
在此处的 print()
和 scanf()
示例中,customer.name
解析为指向第一个元素的指针数组 name
,它是 struct a
类型的 customer
变量的成员。
为了消除混淆,在 %s
格式说明符与 printf()
的情况下,期望的参数类型是指向数组第一个元素的指针。所以,在这个 printf()
调用的情况下,参数 customer.name
是正确的,它是一个指针。
关于c - 访问 c 中结构中的数组成员是访问值还是地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48249573/